mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-28 23:08:36 +08:00
160 lines
10 KiB
XML
160 lines
10 KiB
XML
<Project>
|
|
<PropertyGroup>
|
|
<EnableTrimAnalyzer
|
|
Condition="'$(EnableTrimAnalyzer)' == '' and
|
|
('$(PublishTrimmed)' == 'true' or
|
|
'$(PublishAot)' == 'true' or
|
|
'$(RunAOTCompilation)' == 'true')">true</EnableTrimAnalyzer>
|
|
<EnableTrimAnalyzer Condition="'$(EnableTrimAnalyzer)' == ''">false</EnableTrimAnalyzer>
|
|
|
|
<EnableAotAnalyzer
|
|
Condition="'$(EnableAotAnalyzer)' == '' and
|
|
('$(PublishAot)' == 'true' or
|
|
'$(RunAOTCompilation)' == 'true')">true</EnableAotAnalyzer>
|
|
<EnableAotAnalyzer Condition="'$(EnableAotAnalyzer)' == ''">false</EnableAotAnalyzer>
|
|
|
|
<EnableSingleFileAnalyzer
|
|
Condition="'$(EnableSingleFileAnalyzer)' == '' and
|
|
'$(PublishSingleFile)' == 'true'">true</EnableSingleFileAnalyzer>
|
|
<EnableSingleFileAnalyzer Condition="'$(EnableSingleFileAnalyzer)' == ''">false</EnableSingleFileAnalyzer>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup Condition="$(MSBuildProjectName.StartsWith('AtomUI.')) and
|
|
'$(OutputType)' == 'Library' and
|
|
'$(IsTestProject)' != 'true' and
|
|
'$(IsRoslynComponent)' != 'true' and
|
|
$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">
|
|
<IsTrimmable Condition="'$(IsTrimmable)' == ''">true</IsTrimmable>
|
|
<IsAotCompatible Condition="'$(IsAotCompatible)' == ''">true</IsAotCompatible>
|
|
</PropertyGroup>
|
|
|
|
<!-- https://github.com/dotnet/sdk/issues/22515 -->
|
|
<ItemGroup>
|
|
<None Remove="*.csproj.DotSettings" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup Condition="'$(CompilerGeneratedFilesOutputPath)' != ''">
|
|
<Compile Remove="$(CompilerGeneratedFilesOutputPath)/**/*.cs" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup Condition="'$(IsTestProject)' != 'true' and '$(IsRoslynComponent)' != 'true' and '$(MSBuildProjectName)' != 'AtomUI.Toolchain'">
|
|
<ProjectReference Include="$(MSBuildThisFileDirectory)../src/AtomUI.Generator/AtomUI.Generator.csproj"
|
|
OutputItemType="Analyzer" ReferenceOutputAssembly="false" Private="false" PrivateAssets="all"
|
|
Condition="'@(ProjectReference->WithMetadataValue('Filename', 'AtomUI.Generator'))' == ''" />
|
|
</ItemGroup>
|
|
|
|
<Import Project="$(MSBuildThisFileDirectory)AtomUI.Generator.targets" />
|
|
|
|
<ItemGroup>
|
|
<ProjectReference Update="@(ProjectReference->WithMetadataValue('Filename', 'AtomUI.Toolchain'))">
|
|
<GlobalPropertiesToRemove>%(ProjectReference.GlobalPropertiesToRemove);$(AtomUIToolchainGlobalPropertiesToRemove)</GlobalPropertiesToRemove>
|
|
</ProjectReference>
|
|
</ItemGroup>
|
|
|
|
<!-- NuGet's path walk rebuilds ProjectReference items from strings, dropping their
|
|
metadata. Reapply the tool boundary before it schedules those restore projects. -->
|
|
<Target Name="AtomUIIsolateToolchainRestore" AfterTargets="_GenerateRestoreProjectPathItems">
|
|
<ItemGroup>
|
|
<_CurrentRestoreProjectPathItems Update="@(_CurrentRestoreProjectPathItems->WithMetadataValue('Filename', 'AtomUI.Toolchain'))">
|
|
<UndefineProperties>%(_CurrentRestoreProjectPathItems.UndefineProperties);$(AtomUIToolchainGlobalPropertiesToRemove)</UndefineProperties>
|
|
</_CurrentRestoreProjectPathItems>
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="AtomUIIsolateToolchainRestoreGraph" BeforeTargets="_GenerateRestoreGraph">
|
|
<ItemGroup>
|
|
<_RestoreProjectPathItems Update="@(_RestoreProjectPathItems->WithMetadataValue('Filename', 'AtomUI.Toolchain'))">
|
|
<UndefineProperties>%(_RestoreProjectPathItems.UndefineProperties);$(AtomUIToolchainGlobalPropertiesToRemove)</UndefineProperties>
|
|
</_RestoreProjectPathItems>
|
|
<FilteredRestoreGraphProjectInputItems Update="@(FilteredRestoreGraphProjectInputItems->WithMetadataValue('Filename', 'AtomUI.Toolchain'))">
|
|
<UndefineProperties>%(FilteredRestoreGraphProjectInputItems.UndefineProperties);$(AtomUIToolchainGlobalPropertiesToRemove)</UndefineProperties>
|
|
</FilteredRestoreGraphProjectInputItems>
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="AtomUICleanTestResultsBeforeRun"
|
|
BeforeTargets="VSTest"
|
|
Condition="'$(IsTestProject)' == 'true'">
|
|
<ItemGroup>
|
|
<_AtomUITestResultsDirectoryToCleanBeforeRun Include="$(MSBuildProjectDirectory)/TestResults"
|
|
Condition="Exists('$(MSBuildProjectDirectory)/TestResults')" />
|
|
<_AtomUITestResultsDirectoryToCleanBeforeRun Include="$(AtomUITestResultsDirectory)"
|
|
Condition="'$(AtomUITestResultsDirectory)' != '' and Exists('$(AtomUITestResultsDirectory)')" />
|
|
</ItemGroup>
|
|
<RemoveDir Directories="@(_AtomUITestResultsDirectoryToCleanBeforeRun)" />
|
|
</Target>
|
|
|
|
<Target Name="AtomUIRejectPersistentVSTestDumps"
|
|
BeforeTargets="VSTest"
|
|
Condition="'$(IsTestProject)' == 'true'">
|
|
<Error Condition="'$(VSTestBlameHangDumpType)' == 'full' or '$(VSTestBlameHangDumpType)' == 'mini'"
|
|
Text="AtomUI test runs must not collect persistent VSTest hang dumps. Use --blame-hang-dump-type none or move dump collection outside the repository." />
|
|
<Error Condition="'$(VSTestBlameCrashDumpType)' == 'full' or '$(VSTestBlameCrashDumpType)' == 'mini'"
|
|
Text="AtomUI test runs must not collect persistent VSTest crash dumps. Use --blame-crash-dump-type none or move dump collection outside the repository." />
|
|
</Target>
|
|
|
|
<Target Name="AtomUICleanTestResultsAfterRun"
|
|
AfterTargets="VSTest"
|
|
Condition="'$(IsTestProject)' == 'true'">
|
|
<ItemGroup>
|
|
<_AtomUITestResultsDirectoryToCleanAfterRun Include="$(MSBuildProjectDirectory)/TestResults"
|
|
Condition="Exists('$(MSBuildProjectDirectory)/TestResults')" />
|
|
<_AtomUITestResultsDirectoryToCleanAfterRun Include="$(AtomUITestResultsDirectory)"
|
|
Condition="'$(AtomUITestResultsDirectory)' != '' and Exists('$(AtomUITestResultsDirectory)')" />
|
|
</ItemGroup>
|
|
<RemoveDir Directories="@(_AtomUITestResultsDirectoryToCleanAfterRun)" />
|
|
</Target>
|
|
|
|
<!-- Package assembly owns tool preparation, not the source generator project. -->
|
|
<Target Name="AtomUIPrepareRepositoryPackageTools"
|
|
BeforeTargets="AtomUIPrepareGeneratorConsumerPackageAssets;_GetPackageFiles"
|
|
Condition="'$(NoBuild)' != 'true' and '$(IsPackable)' == 'true' and ('$(AtomUIRegistrationPackageId)' != '' or '$(MSBuildProjectName)' == 'AtomUI.Generator')">
|
|
<MSBuild Projects="$(AtomUIToolchainProject)" Targets="BuildToolchain"
|
|
RemoveProperties="$(AtomUIToolchainGlobalPropertiesToRemove)"
|
|
Properties="Configuration=$(Configuration);AtomUIToolchainProfile=Tasks" />
|
|
</Target>
|
|
|
|
<Target Name="AtomUIPrepareGeneratorConsumerPackageAssets"
|
|
BeforeTargets="_GetPackageFiles"
|
|
Condition="'$(IsPackable)' == 'true' and '$(AtomUIRegistrationPackageId)' != ''">
|
|
<ItemGroup>
|
|
<None Include="$(MSBuildThisFileDirectory)AtomUI.Generator.props"
|
|
Pack="true"
|
|
PackagePath="buildTransitive/$(PackageId).props"
|
|
Visible="false"
|
|
Condition="'@(AtomUILanguage)' == ''" />
|
|
<None Include="$(MSBuildThisFileDirectory)AtomUI.GeneratorConsumer.targets"
|
|
Pack="true"
|
|
PackagePath="buildTransitive/$(PackageId).targets" />
|
|
<None Include="@(AtomUINuGetBuildAsset)"
|
|
Pack="true" />
|
|
<None Include="@(AtomUIGeneratorToolAsset)"
|
|
Pack="true" />
|
|
</ItemGroup>
|
|
|
|
<Error Condition="!Exists('%(AtomUINuGetBuildAsset.Identity)')"
|
|
Text="AtomUI Generator build asset could not be found at '%(AtomUINuGetBuildAsset.Identity)'." />
|
|
<Error Condition="!Exists('%(AtomUIGeneratorToolAsset.Identity)')"
|
|
Text="Prepared AtomUI.Toolchain asset is missing at '%(AtomUIGeneratorToolAsset.Identity)'. Prepare the toolchain with BuildToolchain before packing with --no-build." />
|
|
</Target>
|
|
<!-- Source checkout publishing prepares the same toolchain that packages ship. This hook
|
|
is absent from NuGet consumers and is never reached by an ordinary product Build. -->
|
|
<Target Name="AtomUIPrepareRepositoryPublishTools"
|
|
BeforeTargets="AtomUIPrepareTypeMapBackend;AtomUIPrepareNet8ManagedRegistration;AtomUIPrepareConditionalBridgeManaged;AtomUIPrepareConditionalBridgeNative;AtomUIPrepareNative8Registration"
|
|
Condition="'$(MSBuildProjectName)' != 'AtomUI.Toolchain' and ('$(PublishTrimmed)' == 'true' or '$(PublishAot)' == 'true')">
|
|
<PropertyGroup>
|
|
<_AtomUIRepositoryToolchainTarget>BuildManagedToolchain</_AtomUIRepositoryToolchainTarget>
|
|
<_AtomUIRepositoryToolchainTarget Condition="'$(_AtomUINative8Registration)' == 'true'">Build</_AtomUIRepositoryToolchainTarget>
|
|
<_AtomUIRepositoryBackendProfile Condition="'$(_AtomUIRegistrationFrameworkFamily)' == 'OfficialTypeMap'">ILLink10</_AtomUIRepositoryBackendProfile>
|
|
<_AtomUIRepositoryBackendProfile Condition="'$(_AtomUIRegistrationFrameworkFamily)' == 'Net8Compatibility'">ILLink8</_AtomUIRepositoryBackendProfile>
|
|
</PropertyGroup>
|
|
<MSBuild Projects="$(AtomUIToolchainProject)" Targets="$(_AtomUIRepositoryToolchainTarget)"
|
|
RemoveProperties="NoBuild;NoRestore;$(AtomUIToolchainGlobalPropertiesToRemove)"
|
|
Properties="Configuration=$(Configuration);AtomUIToolchainProfile=Tasks;AtomUIToolchainBackendProfiles=$(_AtomUIRepositoryBackendProfile)" />
|
|
<MSBuild Condition="'$(_AtomUINative8Registration)' == 'true'"
|
|
Projects="$(AtomUIToolchainProject)" Targets="PrepareNativeCompiler"
|
|
RemoveProperties="NoBuild;NoRestore;$(AtomUIToolchainGlobalPropertiesToRemove)"
|
|
Properties="Configuration=$(Configuration);AtomUIToolchainProfile=Tasks" />
|
|
</Target>
|
|
</Project>
|