a98d18c030
I'm working on making the FastUpToDate check in Vs work for the Terminal project. This is one of a few PRs in this area. FastUpToDate lets vs check quickly determine that it doesn't need to do anything for a given project. However, a few of our projects don't produce all the right artifacts, or check too many things, and this eventually causes the `wapproj` to rebuild, EVERY TIME YOU F5 in VS. This second PR deals with some projects MYSTERIOUSLY depending on the `.xaml` files from `Terminal.Control`, even when they by all accounts shouldn't. TerminalSettingsModel ISN'T EVEN A XAML project, so I have no idea why it thinks it needs these xaml files. The TerminalAppLib project thinking it needs them - makes more sense, but is still confusing. Below are my verbatim notes, which led to the solution in this PR. ``` 34>------ Up-To-Date check: Project: Microsoft.Terminal.Settings.Model.Lib, Configuration: Debug x64 ------ 34>Project is not up-to-date: build output 'c:\users\migrie\dev\public\terminal\bin\x64\debug\microsoft.terminal.settings.model.lib\microsoft.terminal.control\searchboxcontrol.xaml' is missing ``` * Just copying the xaml files from `bin\x64\debug\microsoft.terminal.control\microsoft.terminal.control\*.xaml` to `bin\x64\debug\microsoft.terminal.settings.model.lib\microsoft.terminal.control` seemed to fix this. * the .xbfs were already there * It's very unclear why these were ever needed? They aren't used in the build for `Microsoft.Terminal.Settings.Model.Lib`. They aren't copied as a part of the build either - no .xaml files are copied at all in fact * [ ] Does TSE have these .xamls in it's output? * UPDATE: checking out main, and building again - ran into this again. WHY?? * Cleaned again, then built TerminalApp.vcxproj. File is no longer needed? nothing makes sense. * `obj\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsof.CA5CAD1A.tlog\Microsoft.Terminal.Settings.Model.Lib.write.1u.tlog`: ``` C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsoft.Terminal.Control\SearchBoxControl.xbf C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsoft.Terminal.Control\TermControl.xbf C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsoft.Terminal.Control\TSFInputControl.xbf C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsoft.UI.Xaml\Assets\NoiseAsset_256X256_PNG.png C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsoft.Terminal.Control\SearchBoxControl.xbf C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsoft.Terminal.Control\TermControl.xbf C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsoft.Terminal.Control\TSFInputControl.xbf C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsoft.Terminal.Control\SearchBoxControl.xbf C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsoft.Terminal.Control\TermControl.xbf C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsoft.Terminal.Control\TSFInputControl.xbf C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsoft.Terminal.Control\SearchBoxControl.xaml C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsoft.Terminal.Control\TermControl.xaml C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsoft.Terminal.Control\TSFInputControl.xaml ``` From the build: ``` 18>Target _CopyOutOfDateSourceItemsToOutputDirectory: 18> Skipping target "_CopyOutOfDateSourceItemsToOutputDirectory" because all output files are up-to-date with respect to the input files. 18> Input files: 18> C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Control\Microsoft.Terminal.Control\SearchBoxControl.xbf 18> C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Control\Microsoft.Terminal.Control\TermControl.xbf 18> C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Control\Microsoft.Terminal.Control\TSFInputControl.xbf 18> C:\Users\migrie\dev\public\terminal\packages\Microsoft.UI.Xaml.2.7.0-prerelease.210913003\runtimes\win10-x64\native\Microsoft.UI.Xaml\Assets\NoiseAsset_256X256_PNG.png 18> Output files: 18> C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsoft.Terminal.Control\SearchBoxControl.xbf 18> C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsoft.Terminal.Control\TermControl.xbf 18> C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsoft.Terminal.Control\TSFInputControl.xbf 18> C:\Users\migrie\dev\public\terminal\bin\x64\Debug\Microsoft.Terminal.Settings.Model.Lib\Microsoft.UI.Xaml\Assets\NoiseAsset_256X256_PNG.png ``` * Hmm, `21>Project is not up-to-date: build output 'c:\users\migrie\dev\public\terminal\bin\x64\debug\terminalapplib\microsoft.terminal.control\searchboxcontrol.xaml' is missing` as well.
129 lines
7.1 KiB
XML
129 lines
7.1 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
<PropertyGroup Label="Globals">
|
|
<ProjectGuid>{CA5CAD1A-082C-4476-9F33-94B339494076}</ProjectGuid>
|
|
<ProjectName>Microsoft.Terminal.Settings.Model</ProjectName>
|
|
<RootNamespace>Microsoft.Terminal.Settings.Model</RootNamespace>
|
|
<!-- cppwinrt.build.pre.props depends on these settings: -->
|
|
<!-- build a dll, not exe (Application) -->
|
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
<SubSystem>Console</SubSystem>
|
|
<!-- sets a bunch of Windows Universal properties -->
|
|
<OpenConsoleUniversalApp>true</OpenConsoleUniversalApp>
|
|
<PgoTarget>true</PgoTarget>
|
|
</PropertyGroup>
|
|
<Import Project="..\..\..\..\common.openconsole.props" Condition="'$(OpenConsoleDir)'==''" />
|
|
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.pre.props" />
|
|
<!-- ========================= XAML files ======================== -->
|
|
<ItemGroup>
|
|
<!-- DON'T PUT XAML FILES HERE! Put them in TerminalAppLib.vcxproj -->
|
|
</ItemGroup>
|
|
<!-- ========================= Headers ======================== -->
|
|
<ItemGroup>
|
|
<!-- Only put headers for winrt types in here. Don't put other header files
|
|
in here - put them in the lib's vcxproj instead! -->
|
|
<ClInclude Include="../ActionArgs.h" />
|
|
<ClInclude Include="../ActionMap.h" />
|
|
<ClInclude Include="../CascadiaSettings.h" />
|
|
<ClInclude Include="../ColorScheme.h" />
|
|
<ClInclude Include="../Command.h" />
|
|
<ClInclude Include="../GlobalAppSettings.h" />
|
|
<ClInclude Include="../KeyChordSerialization.h" />
|
|
<ClInclude Include="../KeyMapping.h" />
|
|
<ClInclude Include="../Profile.h" />
|
|
<ClInclude Include="../TerminalWarnings.h" />
|
|
<ClInclude Include="../IconPathConverter.h" />
|
|
</ItemGroup>
|
|
<!-- ========================= Cpp Files ======================== -->
|
|
<!-- Don't put source files in here - put them in the lib's vcxproj instead! -->
|
|
<!-- ========================= idl Files ======================== -->
|
|
<ItemGroup>
|
|
<!-- DON'T PUT IDL FILES HERE! Put them in the lib's vcxproj -->
|
|
</ItemGroup>
|
|
<!-- ========================= Misc Files ======================== -->
|
|
<ItemGroup>
|
|
<None Include="$(ProjectName).def" />
|
|
</ItemGroup>
|
|
<!-- ========================= Project References ======================== -->
|
|
<ItemGroup>
|
|
<!--
|
|
the packaging project won't recurse through our dependencies, you have to
|
|
make sure that if you add a cppwinrt dependency to any of these projects,
|
|
you also update all the consumers
|
|
-->
|
|
<ProjectReference Include="$(OpenConsoleDir)src\types\lib\types.vcxproj">
|
|
<Project>{18D09A24-8240-42D6-8CB6-236EEE820263}</Project>
|
|
</ProjectReference>
|
|
<ProjectReference Include="$(OpenConsoleDir)src\propslib\propslib.vcxproj">
|
|
<Project>{345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}</Project>
|
|
</ProjectReference>
|
|
<!-- The midl compiler however, _will_ aggregate our winmd dependencies
|
|
somehow. So make sure to only include top-level dependencies here (don't
|
|
include Settings and Connection, since Control will include them for us) -->
|
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalConnection\TerminalConnection.vcxproj">
|
|
<Private>false</Private>
|
|
</ProjectReference>
|
|
|
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalControl\dll\TerminalControl.vcxproj">
|
|
<!-- Private:true and ReferenceOutputAssembly:false, in combination with
|
|
the manual reference to TerminalControl.winmd below make sure that this
|
|
project will compile correct, and that we won't roll up the TermControl
|
|
xbf's into the packaging project twice. -->
|
|
<Private>true</Private>
|
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
|
</ProjectReference>
|
|
|
|
<!-- Reference Microsoft.Terminal.Settings.ModelLib here, so we can use it's winmd as
|
|
our winmd. This didn't work correctly in VS2017, you'd need to
|
|
manually reference the lib -->
|
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalSettingsModel\Microsoft.Terminal.Settings.ModelLib.vcxproj">
|
|
<Private>true</Private>
|
|
</ProjectReference>
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<!-- Manually add a reference to TerminalControl here. We need this so
|
|
MDMERGE will know where the TermControl types are defined. However, we need
|
|
to do it exactly like this so the packaging project won't roll up
|
|
TermControl's .xbf's from both the TermControl project and this one. -->
|
|
<Reference Include="Microsoft.Terminal.Control">
|
|
<HintPath>$(OpenConsoleCommonOutDir)Microsoft.Terminal.Control\Microsoft.Terminal.Control.winmd</HintPath>
|
|
<IsWinMDFile>true</IsWinMDFile>
|
|
<Private>false</Private>
|
|
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
|
</Reference>
|
|
|
|
<Reference Include="Microsoft.Terminal.Core">
|
|
<HintPath>$(OpenConsoleCommonOutDir)TerminalCore\Microsoft.Terminal.Core.winmd</HintPath>
|
|
<IsWinMDFile>true</IsWinMDFile>
|
|
<Private>false</Private>
|
|
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
|
|
</Reference>
|
|
</ItemGroup>
|
|
|
|
<Import Project="$(OpenConsoleDir)packages\Microsoft.UI.Xaml.2.7.0-prerelease.210913003\build\native\Microsoft.UI.Xaml.targets" Condition="Exists('$(OpenConsoleDir)packages\Microsoft.UI.Xaml.2.7.0-prerelease.210913003\build\native\Microsoft.UI.Xaml.targets')" />
|
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
|
<PropertyGroup>
|
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
|
</PropertyGroup>
|
|
<Error Condition="!Exists('$(OpenConsoleDir)\packages\Microsoft.UI.Xaml.2.7.0-prerelease.210913003\build\native\Microsoft.UI.Xaml.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(OpenConsoleDir)\packages\Microsoft.UI.Xaml.2.7.0-prerelease.210913003\build\native\Microsoft.UI.Xaml.targets'))" />
|
|
</Target>
|
|
|
|
<ItemDefinitionGroup>
|
|
<ClCompile>
|
|
<AdditionalIncludeDirectories>$(OpenConsoleDir)\dep\jsoncpp\json;%(AdditionalIncludeDirectories);</AdditionalIncludeDirectories>
|
|
</ClCompile>
|
|
<Link>
|
|
<AdditionalDependencies>User32.lib;WindowsApp.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
<!-- TSM Lib contains a DllMain that we need to force the use of. -->
|
|
<AdditionalOptions Condition="'$(Platform)'=='Win32'">/INCLUDE:_DllMain@12 %(AdditionalOptions)</AdditionalOptions>
|
|
<AdditionalOptions Condition="'$(Platform)'!='Win32'">/INCLUDE:DllMain %(AdditionalOptions)</AdditionalOptions>
|
|
</Link>
|
|
<Reference>
|
|
<!-- Do not propagate microsoft.ui.xaml upwards as a private dependency. -->
|
|
<Private>false</Private>
|
|
</Reference>
|
|
</ItemDefinitionGroup>
|
|
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.post.props" />
|
|
</Project>
|