| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <_AvaloniaUseExternalMSBuild>$(AvaloniaUseExternalMSBuild)</_AvaloniaUseExternalMSBuild>
- <_AvaloniaUseExternalMSBuild Condition="'$(_AvaloniaForceInternalMSBuild)' == 'true'">false</_AvaloniaUseExternalMSBuild>
- <AvaloniaXamlReportImportance Condition="'$(AvaloniaXamlReportImportance)' == ''">low</AvaloniaXamlReportImportance>
- <_AvaloniaSkipXamlCompilation Condition="'$(_AvaloniaSkipXamlCompilation)' == ''">false</_AvaloniaSkipXamlCompilation>
- <AvaloniaUseCompiledBindingsByDefault Condition="'$(AvaloniaUseCompiledBindingsByDefault)' == ''">false</AvaloniaUseCompiledBindingsByDefault>
- </PropertyGroup>
-
-
- <PropertyGroup>
- <!-- Enable property page if VisualStudioVersion is great or equal 17.0 and Language is'not VB.NET -->
- <AvaloniaEnablePropertyPage Condition="'$(AvaloniaEnablePropertyPage)' == '' and '$(VisualStudioVersion)' >= '17.0' and '$(Language)' != 'VB'">true</AvaloniaEnablePropertyPage>
- </PropertyGroup>
- <ItemGroup Label="Avalonia Property Page">
- <PropertyPageSchema Include="$(MSBuildThisFileDirectory)\AvaloniaRules.Project.xml" Condition="'$(AvaloniaEnablePropertyPage)' == 'true'">
- <Context>Project</Context>
- </PropertyPageSchema>
- </ItemGroup>
- <!-- Unfortunately we have to update default items in .targets since custom nuget props are improted before Microsoft.NET.Sdk.DefaultItems.props -->
- <ItemGroup Condition="'$(EnableDefaultItems)'=='True'">
- <Compile Update="**\*.paml.cs">
- <DependentUpon>%(Filename)</DependentUpon>
- <SubType>Code</SubType>
- </Compile>
- <Compile Update="**\*.axaml.cs">
- <DependentUpon>%(Filename)</DependentUpon>
- <SubType>Code</SubType>
- </Compile>
- <None Remove="**\*.axaml" />
- <None Remove="**\*.paml" />
- </ItemGroup>
-
- <UsingTask TaskName="GenerateAvaloniaResourcesTask"
- AssemblyFile="$(AvaloniaBuildTasksLocation)"
- />
- <UsingTask TaskName="CompileAvaloniaXamlTask"
- AssemblyFile="$(AvaloniaBuildTasksLocation)"
- />
- <Target Name="AddAvaloniaResources"
- BeforeTargets="ResolveReferences"
- Condition="('@(AvaloniaResource->Count())' > 0) or ('@(AvaloniaXaml->Count())' > 0)">
- <PropertyGroup>
- <AvaloniaResourcesTemporaryFilePath Condition="'$(AvaloniaResourcesTemporaryFilePath)' == ''">$(IntermediateOutputPath)/Avalonia/resources</AvaloniaResourcesTemporaryFilePath>
- </PropertyGroup>
- <ItemGroup>
- <EmbeddedResource Include="$(AvaloniaResourcesTemporaryFilePath)">
- <LogicalName>!AvaloniaResources</LogicalName>
- </EmbeddedResource>
- </ItemGroup>
- </Target>
-
- <PropertyGroup>
- <BuildAvaloniaResourcesDependsOn>$(BuildAvaloniaResourcesDependsOn);AddAvaloniaResources;ResolveReferences;_GenerateAvaloniaResourcesDependencyCache;_GenerateNoWarnForExec</BuildAvaloniaResourcesDependsOn>
- <CompileAvaloniaXamlDependsOn>$(CompileAvaloniaXamlDependsOn);_GenerateNoWarnForExec</CompileAvaloniaXamlDependsOn>
- </PropertyGroup>
- <Target Name="_GenerateAvaloniaResourcesDependencyCache" BeforeTargets="GenerateAvaloniaResources">
- <PropertyGroup>
- <_AvaloniaResourcesInputsCacheFilePath>$(IntermediateOutputPath)/Avalonia/Resources.Inputs.cache</_AvaloniaResourcesInputsCacheFilePath>
- </PropertyGroup>
- <ItemGroup>
- <CustomAdditionalGenerateAvaloniaResourcesInputs Include="$(_AvaloniaResourcesInputsCacheFilePath)" />
- </ItemGroup>
-
- <Hash ItemsToHash="@(AvaloniaResource);@(AvaloniaXaml);$(MSBuildAllProjects)">
- <Output TaskParameter="HashResult" PropertyName="AvaloniaResourcesDependencyHash" />
- </Hash>
- <MakeDir Directories="$(IntermediateOutputPath)/Avalonia" />
- <WriteLinesToFile Overwrite="true" File="$(_AvaloniaResourcesInputsCacheFilePath)" Lines="$(AvaloniaResourcesDependencyHash)" WriteOnlyWhenDifferent="True" />
- <ItemGroup>
- <FileWrites Include="$(_AvaloniaResourcesInputsCacheFilePath)" />
- </ItemGroup>
- </Target>
- <Target Name="_GenerateNoWarnForExec">
- <PropertyGroup>
- <!-- https://github.com/dotnet/sdk/issues/8792 -->
- <_NoWarnForExec>'"$(NoWarn)"'</_NoWarnForExec>
- <_NoWarnForExec Condition="$([MSBuild]::IsOSPlatform('Windows'))">\"$(NoWarn)\"</_NoWarnForExec>
- </PropertyGroup>
- </Target>
-
- <Target Name="GenerateAvaloniaResources"
- BeforeTargets="CoreCompile;CoreResGen"
- Inputs="@(AvaloniaResource);@(AvaloniaXaml);@(CustomAdditionalGenerateAvaloniaResourcesInputs);$(MSBuildAllProjects)"
- Outputs="$(AvaloniaResourcesTemporaryFilePath)"
- DependsOnTargets="$(BuildAvaloniaResourcesDependsOn)"
- Condition="('@(AvaloniaResource->Count())' > 0) or ('@(AvaloniaXaml->Count())' > 0)"
- >
- <ItemGroup>
- <AvaloniaResource Include="@(AvaloniaXaml)" />
- </ItemGroup>
- <GenerateAvaloniaResourcesTask
- Condition="'$(_AvaloniaUseExternalMSBuild)' != 'true'"
- Output="$(AvaloniaResourcesTemporaryFilePath)"
- Root="$(MSBuildProjectDirectory)"
- Resources="@(AvaloniaResource)"
- ReportImportance="$(AvaloniaXamlReportImportance)"/>
- <ItemGroup Condition="'$(_AvaloniaUseExternalMSBuild)' != 'true'">
- <FileWrites Include="$(AvaloniaResourcesTemporaryFilePath)" />
- </ItemGroup>
- <Exec
- Condition="'$(_AvaloniaUseExternalMSBuild)' == 'true'"
- Command="dotnet msbuild /nodereuse:false $(MSBuildProjectFile) /t:GenerateAvaloniaResources /p:NoWarn=$(_NoWarnForExec) /p:_AvaloniaForceInternalMSBuild=true /p:Configuration=$(Configuration) /p:TargetFramework=$(TargetFramework) /p:RuntimeIdentifier=$(RuntimeIdentifier) /p:BuildProjectReferences=false"/>
- </Target>
- <Target
- Name="CompileAvaloniaXaml"
- AfterTargets="AfterCompile"
- DependsOnTargets="$(CompileAvaloniaXamlDependsOn)"
- Condition="
- (('@(AvaloniaResource->Count())' > 0)
- or ('@(AvaloniaXaml->Count())' > 0))
- and Exists('@(IntermediateAssembly)')
- And $(DesignTimeBuild) != true
- And $(EnableAvaloniaXamlCompilation) != false"
- >
- <PropertyGroup>
- <AvaloniaXamlReferencesTemporaryFilePath Condition="'$(AvaloniaXamlReferencesTemporaryFilePath)' == ''">$(IntermediateOutputPath)/Avalonia/references</AvaloniaXamlReferencesTemporaryFilePath>
- <AvaloniaXamlOriginalCopyFilePath Condition="'$(AvaloniaXamlOriginalCopyFilePath)' == ''">$(IntermediateOutputPath)/Avalonia/original.dll</AvaloniaXamlOriginalCopyFilePath>
- <AvaloniaXamlIlVerifyIl Condition="'$(AvaloniaXamlIlVerifyIl)' == ''">false</AvaloniaXamlIlVerifyIl>
- <AvaloniaXamlIlDebuggerLaunch Condition="'$(AvaloniaXamlIlDebuggerLaunch)' == ''">false</AvaloniaXamlIlDebuggerLaunch>
- </PropertyGroup>
- <WriteLinesToFile
- Condition="'$(_AvaloniaForceInternalMSBuild)' != 'true'"
- File="$(AvaloniaXamlReferencesTemporaryFilePath)"
- Lines="@(ReferencePathWithRefAssemblies)"
- Overwrite="true" />
- <ItemGroup Condition="'$(_AvaloniaForceInternalMSBuild)' != 'true'">
- <FileWrites Include="$(AvaloniaXamlReferencesTemporaryFilePath)" />
- </ItemGroup>
- <CompileAvaloniaXamlTask
- Condition="'$(_AvaloniaUseExternalMSBuild)' != 'true'"
- AssemblyFile="@(IntermediateAssembly)"
- ReferencesFilePath="$(AvaloniaXamlReferencesTemporaryFilePath)"
- OriginalCopyPath="$(AvaloniaXamlOriginalCopyFilePath)"
- RefAssemblyFile="@(IntermediateRefAssembly)"
- ProjectDirectory="$(MSBuildProjectDirectory)"
- VerifyIl="$(AvaloniaXamlIlVerifyIl)"
- ReportImportance="$(AvaloniaXamlReportImportance)"
- AssemblyOriginatorKeyFile="$(AssemblyOriginatorKeyFile)"
- SignAssembly="$(SignAssembly)"
- DelaySign="$(DelaySign)"
- SkipXamlCompilation="$(_AvaloniaSkipXamlCompilation)"
- DebuggerLaunch="$(AvaloniaXamlIlDebuggerLaunch)"
- DefaultCompileBindings="$(AvaloniaUseCompiledBindingsByDefault)">
- <Output TaskParameter="WrittenFilePaths" ItemName="FileWrites" />
- </CompileAvaloniaXamlTask>
- <Exec
- Condition="'$(_AvaloniaUseExternalMSBuild)' == 'true'"
- Command="dotnet msbuild /nodereuse:false $(MSBuildProjectFile) /t:CompileAvaloniaXaml /p:NoWarn=$(_NoWarnForExec) /p:_AvaloniaForceInternalMSBuild=true /p:Configuration=$(Configuration) /p:TargetFramework=$(TargetFramework) /p:RuntimeIdentifier=$(RuntimeIdentifier) /p:BuildProjectReferences=false"/>
- </Target>
-
- <ItemGroup>
- <UpToDateCheckInput Include="@(AvaloniaResource)" />
- <UpToDateCheckInput Include="@(AvaloniaXaml)" />
- </ItemGroup>
-
- <PropertyGroup>
- <AvaloniaFilePreviewDependsOn Condition="'$(SkipBuild)'!='True'">Build</AvaloniaFilePreviewDependsOn>
- </PropertyGroup>
-
- <Target Name="AvaloniaFilePreview" DependsOnTargets="$(AvaloniaFilePreviewDependsOn)">
- <PropertyGroup>
- <APreviewerUrl>http://127.0.0.1:6001</APreviewerUrl>
- <APreviewExecutable>$(OutputPath)/$(AssemblyName).dll</APreviewExecutable>
- <APreviewFile Condition="$(APreviewFile) == ''">MainWindow.axaml</APreviewFile>
- <APreviewAssembly Condition="$(APreviewAssembly) == ''">$(APreviewExecutable)</APreviewAssembly>
- <APreviewerDepsJsonPath>$([System.IO.Path]::ChangeExtension('$(APreviewExecutable)', '.deps.json'))</APreviewerDepsJsonPath>
- <APreviewerRuntimeConfigPath>$([System.IO.Path]::ChangeExtension('$(APreviewExecutable)', '.runtimeconfig.json'))</APreviewerRuntimeConfigPath>
- <APreviewTransportUrl>$([System.IO.Path]::GetFullPath('$(APreviewFile)'))</APreviewTransportUrl>
- </PropertyGroup>
-
-
- <Message Importance="high" Text="Launching previewer for"/>
- <Message Importance="high" Text="File (APreviewFile): $(APreviewTransportUrl)"/>
- <Message Importance="high" Text="Containing assembly (APreviewAssembly): $(APreviewDefiningAssembly)"/>
- <Message Importance="high" Text="Executable: $(APreviewExecutable)"/>
- <Message Importance="high" Text="Url (APreviewerUrl): $(APreviewerUrl)"/>
-
- <Exec Command="dotnet exec --runtimeconfig "$(APreviewerRuntimeConfigPath)" --depsfile "$(APreviewerDepsJsonPath)" "$(AvaloniaPreviewerNetCoreToolPath)" --method html --html-url $(APreviewerUrl) --transport $(APreviewTransportUrl) "$(APreviewExecutable)""/>
-
- </Target>
- </Project>
|