e3ee5838a7
Wildcards are not allowed in toplevel ItemGroups in vcxproj; they must be generated by targets. We mostly use wildcards for pulling in PRI files that are dumped on disk by the translation tool. We don't want to check those in, so we can't expand references to them. To that end, I've introduced a new target that will take a list of folders containing resw files and expand wildcards under them. All[1] other wildcards have been moved into their respective targets _or_ simply expanded. [1]: Nothing has complained about the resource wildcards in CascadiaResources.build.items, so I haven't exploded it yet. Fixes #6214.
155 lines
9.2 KiB
XML
155 lines
9.2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
<Import Project="..\..\..\common.openconsole.props" Condition="'$(OpenConsoleDir)'==''" />
|
|
<Import Project="$(OpenConsoleDir)src\wap-common.build.pre.props" />
|
|
<PropertyGroup Label="Configuration">
|
|
<TargetPlatformVersion>10.0.18362.0</TargetPlatformVersion>
|
|
<TargetPlatformMinVersion>10.0.18362.0</TargetPlatformMinVersion>
|
|
<!--
|
|
These two properties are very important!
|
|
Without them, msbuild will stomp MinVersion and MaxVersionTested in the
|
|
Package.appxmanifest and replace them with whatever our values for
|
|
TargetPlatformMinVersion and TargetPlatformVersion are.
|
|
-->
|
|
<AppxOSMinVersionReplaceManifestVersion>false</AppxOSMinVersionReplaceManifestVersion>
|
|
<AppxOSMaxVersionTestedReplaceManifestVersion>false</AppxOSMaxVersionTestedReplaceManifestVersion>
|
|
</PropertyGroup>
|
|
<PropertyGroup>
|
|
<ProjectGuid>CA5CAD1A-224A-4171-B13A-F16E576FDD12</ProjectGuid>
|
|
<EntryPointProjectUniqueName>..\WindowsTerminal\WindowsTerminal.vcxproj</EntryPointProjectUniqueName>
|
|
<DebuggerType>NativeOnly</DebuggerType>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="!Exists('CascadiaPackage_TemporaryKey.pfx')">
|
|
<AppxPackageSigningEnabled>false</AppxPackageSigningEnabled>
|
|
<AppxBundle>Never</AppxBundle>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="Exists('CascadiaPackage_TemporaryKey.pfx')">
|
|
<AppxPackageSigningEnabled>true</AppxPackageSigningEnabled>
|
|
<AppxAutoIncrementPackageRevision>False</AppxAutoIncrementPackageRevision>
|
|
<PackageCertificateKeyFile>CascadiaPackage_TemporaryKey.pfx</PackageCertificateKeyFile>
|
|
</PropertyGroup>
|
|
<ItemGroup Condition="Exists('CascadiaPackage_TemporaryKey.pfx')">
|
|
<None Include="CascadiaPackage_TemporaryKey.pfx" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<AppxManifest Include="Package.appxmanifest" Condition="'$(WindowsTerminalBranding)'=='Release'">
|
|
<SubType>Designer</SubType>
|
|
</AppxManifest>
|
|
<AppxManifest Include="Package-Pre.appxmanifest" Condition="'$(WindowsTerminalBranding)'=='Preview'">
|
|
<SubType>Designer</SubType>
|
|
</AppxManifest>
|
|
<AppxManifest Include="Package-Dev.appxmanifest" Condition="'$(WindowsTerminalBranding)'==''">
|
|
<SubType>Designer</SubType>
|
|
</AppxManifest>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<!-- Resources -->
|
|
<!-- This resw only defines things that are used in this package's AppxManifest,
|
|
so it's not in the common resource items. -->
|
|
<PRIResource Include="Resources\en-US\Resources.resw" />
|
|
<PRIResource Include="Resources\Resources.resw" />
|
|
<OCResourceDirectory Include="Resources" />
|
|
</ItemGroup>
|
|
|
|
<!-- This is picked up by CascadiaResources.build.items. -->
|
|
<PropertyGroup Condition="'$(WindowsTerminalBranding)'==''">
|
|
<WindowsTerminalAssetSuffix>-Dev</WindowsTerminalAssetSuffix>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(WindowsTerminalBranding)'=='Preview'">
|
|
<WindowsTerminalAssetSuffix>-Pre</WindowsTerminalAssetSuffix>
|
|
</PropertyGroup>
|
|
|
|
<Import Project="$(MSBuildThisFileDirectory)..\CascadiaResources.build.items" />
|
|
<Import Project="$(OpenConsoleDir)src\wap-common.build.post.props" />
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\WindowsTerminal\WindowsTerminal.vcxproj" />
|
|
<ProjectReference Include="..\..\host\exe\Host.EXE.vcxproj" />
|
|
<ProjectReference Include="..\TerminalAzBridge\TerminalAzBridge.vcxproj" />
|
|
<ProjectReference Include="..\ShellExtension\WindowsTerminalShellExt.vcxproj" />
|
|
</ItemGroup>
|
|
|
|
<Target Name="OpenConsoleStompSourceProjectForWapProject" BeforeTargets="_ConvertItems">
|
|
<ItemGroup>
|
|
<!-- Stomp all "SourceProject" values for all incoming dependencies to flatten the package. -->
|
|
<_TemporaryFilteredWapProjOutput Include="@(_FilteredNonWapProjProjectOutput)" />
|
|
<_FilteredNonWapProjProjectOutput Remove="@(_TemporaryFilteredWapProjOutput)" />
|
|
<_FilteredNonWapProjProjectOutput Include="@(_TemporaryFilteredWapProjOutput)">
|
|
<!-- Blank the SourceProject here to vend all files into the root of the package. -->
|
|
<SourceProject>
|
|
</SourceProject>
|
|
</_FilteredNonWapProjProjectOutput>
|
|
</ItemGroup>
|
|
</Target>
|
|
<!-- Move all the PRI files that would be packaged into the appx into _PriFile so that
|
|
GenerateProjectPriFile catches them. This requires us to move payload collection
|
|
up before GenerateProjectPriFile, when it is typically _after_ it (because the
|
|
DesktopBridge project type is built to only prepare the payload during appx manifest
|
|
generation.
|
|
|
|
Since PRI file generation is _before_ manifest generation (for possibly obvious or
|
|
important reasons), that doesn't work for us.
|
|
-->
|
|
<PropertyGroup>
|
|
<!-- Only for MSBuild versions < 16.3.0 -->
|
|
<_GenerateProjectPriFileDependsOn Condition="$(MSBuildVersion) < '16.3.0'">OpenConsoleLiftDesktopBridgePriFiles;$(_GenerateProjectPriFileDependsOn)</_GenerateProjectPriFileDependsOn>
|
|
</PropertyGroup>
|
|
<Target Name="OpenConsoleLiftDesktopBridgePriFiles" DependsOnTargets="_ConvertItems">
|
|
<ItemGroup>
|
|
<_PriFile Include="@(_NonWapProjProjectOutput)" Condition="'%(Extension)' == '.pri'" />
|
|
<!-- Remove all other .pri files from the appx payload. -->
|
|
<AppxPackagePayload Remove="@(AppxPackagePayload)" Condition="'%(Extension)' == '.pri'" />
|
|
</ItemGroup>
|
|
</Target>
|
|
<!-- VS 16.3.0 added a rule to the WAP packaging project that removes all non-WAP payload, which we were relying on to
|
|
roll up our subproject resources. We have to suppress that rule but keep part of its logic, because that rule is
|
|
where the AppxPackagePayload items are created. -->
|
|
<PropertyGroup>
|
|
<WapProjBeforeGenerateAppxManifestDependsOn>
|
|
$([MSBuild]::Unescape('$(WapProjBeforeGenerateAppxManifestDependsOn.Replace('_RemoveAllNonWapUWPItems', '_OpenConsoleRemoveAllNonWapUWPItems'))'))
|
|
</WapProjBeforeGenerateAppxManifestDependsOn>
|
|
</PropertyGroup>
|
|
<Target Name="_OpenConsoleRemoveAllNonWapUWPItems">
|
|
<ItemGroup>
|
|
<AppxPackagePayload Include="@(WapProjPackageFile)" />
|
|
<AppxUploadPackagePayload Include="@(UploadWapProjPackageFile)" />
|
|
<!-- 16.3.0 - remove non-resources.pri PRI files since we just forced them back in. -->
|
|
<AppxPackagePayload Remove="@(AppxPackagePayload)" Condition="'%(Extension)' == '.pri' and '%(Filename)' != 'resources'" />
|
|
<AppxUploadPackagePayload Remove="@(AppxUploadPackagePayload)" Condition="'%(Extension)' == '.pri' and '%(Filename)' != 'resources'" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<!-- **BEGIN VC LIBS HACK** -->
|
|
<!--
|
|
For our release builds, we're just going to integrate the UWPDesktop CRT into our package and delete the package dependencies.
|
|
It's very difficult for users who do not have access to the store to get our dependency packages, and we want to be robust
|
|
and deployable everywhere. Since these libraries can be redistributed, it's easiest if we simply redistribute them.
|
|
See also the "VC LIBS HACK" section in WindowsTerminal.vcxproj.
|
|
-->
|
|
<!-- This target removes the FrameworkSdkReferences from before the AppX package targets manifest generation happens.
|
|
This is part of the generic machinery that applies to every AppX. -->
|
|
<Target Name="_OpenConsoleStripAllDependenciesFromPackageFirstManifest" BeforeTargets="_GenerateCurrentProjectAppxManifest">
|
|
<ItemGroup Condition="'$(WindowsTerminalOfficialBuild)'=='true'">
|
|
<FrameworkSdkReference Remove="@(FrameworkSdkReference)" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<!-- This target removes the FrameworkSdkPackages from before the *desktop bridge* manifest generation happens. -->
|
|
<Target Name="_OpenConsoleStripAllDependenciesFromPackageSecondManifest" BeforeTargets="_GenerateDesktopBridgeAppxManifest" DependsOnTargets="_ResolveVCLibDependencies">
|
|
<ItemGroup Condition="'$(WindowsTerminalOfficialBuild)'=='true'">
|
|
<FrameworkSdkPackage Remove="@(FrameworkSdkPackage)" />
|
|
</ItemGroup>
|
|
</Target>
|
|
<!-- **END VC LIBS HACK** -->
|
|
|
|
<!-- This is required to get the package dependency in the AppXManifest. -->
|
|
<Import Project="..\..\..\packages\Microsoft.UI.Xaml.2.4.2-prerelease.200604001\build\native\Microsoft.UI.Xaml.targets" Condition="Exists('..\..\..\packages\Microsoft.UI.Xaml.2.4.2-prerelease.200604001\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('..\..\..\packages\Microsoft.UI.Xaml.2.4.2-prerelease.200604001\build\native\Microsoft.UI.Xaml.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\packages\Microsoft.UI.Xaml.2.4.2-prerelease.200604001\build\native\Microsoft.UI.Xaml.targets'))" />
|
|
</Target>
|
|
|
|
<Import Project="$(SolutionDir)build\rules\CollectWildcardResources.targets" />
|
|
</Project>
|