Move mobile AppBuilder & AOTCompiler projects into tools-local (#36478)

Moving the projects will make sure their artifacts are always available to the different CI legs.
This commit is contained in:
Steve Pfister 2020-05-15 13:36:11 -04:00 committed by GitHub
parent ec08b85572
commit b6ef0a54ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
34 changed files with 97 additions and 85 deletions

View File

@ -27,43 +27,10 @@
<Import Project="$(RepositoryEngineeringDir)restore\docs.targets" Condition="'$(DotNetBuildFromSource)' != 'true'" /> <Import Project="$(RepositoryEngineeringDir)restore\docs.targets" Condition="'$(DotNetBuildFromSource)' != 'true'" />
<Import Project="$(RepositoryEngineeringDir)restore\optimizationData.targets" Condition="'$(DotNetBuildFromSource)' != 'true' and '$(EnableNgenOptimization)' == 'true'" /> <Import Project="$(RepositoryEngineeringDir)restore\optimizationData.targets" Condition="'$(DotNetBuildFromSource)' != 'true' and '$(EnableNgenOptimization)' == 'true'" />
<!-- <Target Name="BuildLocalTasks"
Use synthetic inputs/outputs to avoid building it all the time. This should let devs build with BeforeTargets="Restore">
MSBuild node reuse enabled (the Arcade default). If it were built every time, it would hit file <MSBuild Projects="$(RepoTasksDir)tasks.proj"
locking issues vs. the persistent nodes that loaded the task DLL for the previous build. It Targets="BuildAndRestoreIncrementally"/>
isn't particularly accurate, but better than nothing.
-->
<Target Name="BuildRepoTasks"
DependsOnTargets="GetRepoTasksSrc"
BeforeTargets="Restore"
Inputs="@(RepoTasksSrc)"
Outputs="$(RepoTasksOutputFile)">
<ItemGroup>
<RepoTaskProjects Include="$(RepoTasksDir)**\*.csproj" />
</ItemGroup>
<MSBuild Projects="@(RepoTaskProjects)"
Properties="MSBuildRestoreSessionId=$([System.Guid]::NewGuid());Configuration=Debug;Platform=AnyCPU"
Targets="Restore"/>
<MSBuild Projects="@(RepoTaskProjects)"
Properties="Configuration=Debug;Platform=AnyCPU"
Targets="Build"/>
<WriteLinesToFile File="$(RepoTasksOutputFile)"
Lines="$(RepoTasksOutputFile)"
Overwrite="true" />
</Target>
<Target Name="GetRepoTasksSrc">
<PropertyGroup>
<RepoTasksDir>$(RepoTasksDir)</RepoTasksDir>
<RepoTasksOutputFile>$(ArtifactsObjDir)runtime.tasks\Debug\build-semaphore.txt</RepoTasksOutputFile>
</PropertyGroup>
<ItemGroup>
<RepoTasksSrc Include="$(RepoTasksDir)**\*.cs*" />
</ItemGroup>
</Target> </Target>
<Target Name="RestoreWithoutStaticGraph" <Target Name="RestoreWithoutStaticGraph"

View File

@ -47,6 +47,16 @@
<CoreLibSharedDir>$([MSBuild]::NormalizeDirectory('$(LibrariesProjectRoot)', 'System.Private.CoreLib', 'src'))</CoreLibSharedDir> <CoreLibSharedDir>$([MSBuild]::NormalizeDirectory('$(LibrariesProjectRoot)', 'System.Private.CoreLib', 'src'))</CoreLibSharedDir>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(TargetsMobile)' == 'true'">
<AppleAppBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AppleAppBuilder', 'Debug', '$(NetCoreAppCurrent)'))</AppleAppBuilderDir>
<AndroidAppBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AndroidAppBuilder', 'Debug', '$(NetCoreAppCurrent)'))</AndroidAppBuilderDir>
<MonoAOTCompilerDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'MonoAOTCompiler', 'Debug', '$(NetCoreAppCurrent)'))</MonoAOTCompilerDir>
<AppleAppBuilderTasksAssemblyPath>$([MSBuild]::NormalizePath('$(AppleAppBuilderDir)', 'AppleAppBuilder.dll'))</AppleAppBuilderTasksAssemblyPath>
<AndroidAppBuilderTasksAssemblyPath>$([MSBuild]::NormalizePath('$(AndroidAppBuilderDir)', 'AndroidAppBuilder.dll'))</AndroidAppBuilderTasksAssemblyPath>
<MonoAOTCompilerTasksAssemblyPath>$([MSBuild]::NormalizePath('$(MonoAOTCompilerDir)', 'MonoAOTCompiler.dll'))</MonoAOTCompilerTasksAssemblyPath>
</PropertyGroup>
<!-- Packaging properties --> <!-- Packaging properties -->
<PropertyGroup> <PropertyGroup>
<!-- <!--

View File

@ -7,8 +7,9 @@
</PropertyGroup> </PropertyGroup>
<!-- Generate a self-contained app bundle for Android with tests. --> <!-- Generate a self-contained app bundle for Android with tests. -->
<UsingTask TaskName="AndroidAppBuilderTask" <UsingTask Condition="'$(TargetOS)' == 'Android'"
AssemblyFile="$(AndroidAppBuilderDir)AndroidAppBuilder.dll" /> TaskName="AndroidAppBuilderTask"
AssemblyFile="$(AndroidAppBuilderTasksAssemblyPath)" />
<Target Condition="'$(TargetOS)' == 'Android'" Name="BundleTestAndroidApp"> <Target Condition="'$(TargetOS)' == 'Android'" Name="BundleTestAndroidApp">
<PropertyGroup> <PropertyGroup>
@ -48,12 +49,13 @@
</Target> </Target>
<!-- Generate a self-contained app bundle for iOS with tests. --> <!-- Generate a self-contained app bundle for iOS with tests. -->
<UsingTask TaskName="AppleAppBuilderTask" <UsingTask Condition="'$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'tvOS'"
AssemblyFile="$(AppleAppBuilderDir)AppleAppBuilder.dll" /> TaskName="AppleAppBuilderTask"
AssemblyFile="$(AppleAppBuilderTasksAssemblyPath)" />
<UsingTask TaskName="MonoAOTCompiler" <UsingTask TaskName="MonoAOTCompiler"
AssemblyFile="$(MonoAOTCompilerDir)MonoAOTCompiler.dll" /> AssemblyFile="$(MonoAOTCompilerTasksAssemblyPath)" />
<Import Project="$(MonoProjectRoot)msbuild\AotCompilerTask\MonoAOTCompiler.props" /> <Import Project="$(MonoAOTCompilerDir)MonoAOTCompiler.props" />
<Target Condition="'$(TargetOS)' == 'iOS'" Name="BundleTestAppleApp"> <Target Condition="'$(TargetOS)' == 'iOS'" Name="BundleTestAppleApp">
<Error Condition="!Exists('$(RuntimePackRidDir)')" Text="RuntimePackRidDir=$(RuntimePackRidDir) doesn't exist" /> <Error Condition="!Exists('$(RuntimePackRidDir)')" Text="RuntimePackRidDir=$(RuntimePackRidDir) doesn't exist" />

View File

@ -21,11 +21,6 @@
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(TargetsMobile)' == 'true'"> <PropertyGroup Condition="'$(TargetsMobile)' == 'true'">
<MobileHelperTasksDirSuffix>$(NetCoreAppCurrent)-$(MonoConfiguration)</MobileHelperTasksDirSuffix>
<AppleAppBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AppleAppBuilder', '$(MobileHelperTasksDirSuffix)'))</AppleAppBuilderDir>
<AndroidAppBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AndroidAppBuilder', '$(MobileHelperTasksDirSuffix)'))</AndroidAppBuilderDir>
<MonoAOTCompilerDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'MonoAOTCompiler', '$(MobileHelperTasksDirSuffix)'))</MonoAOTCompilerDir>
<!-- Test runners are built as part of libs.pretest so we need to use libraries configuration --> <!-- Test runners are built as part of libs.pretest so we need to use libraries configuration -->
<MobileRunnersDirSuffix>$(NetCoreAppCurrent)-$(Configuration)</MobileRunnersDirSuffix> <MobileRunnersDirSuffix>$(NetCoreAppCurrent)-$(Configuration)</MobileRunnersDirSuffix>
<AppleTestRunnerDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AppleTestRunner', '$(MobileRunnersDirSuffix)'))</AppleTestRunnerDir> <AppleTestRunnerDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AppleTestRunner', '$(MobileRunnersDirSuffix)'))</AppleTestRunnerDir>

View File

@ -104,10 +104,10 @@
<!-- Paths for Mobile App Projects --> <!-- Paths for Mobile App Projects -->
<PropertyGroup> <PropertyGroup>
<AppleAppBuilderProjDirectory>$([MSBuild]::NormalizeDirectory('$(MonoProjectRoot)', 'msbuild', 'AppleAppBuilder'))</AppleAppBuilderProjDirectory> <AppleAppBuilderProjDirectory>$([MSBuild]::NormalizeDirectory('$(RepoTasksDir)', 'mobile.tasks', 'AppleAppBuilder'))</AppleAppBuilderProjDirectory>
<AppleTestRunnerProjDirectory>$([MSBuild]::NormalizeDirectory('$(MonoProjectRoot)', 'msbuild', 'AppleTestRunner'))</AppleTestRunnerProjDirectory> <AppleTestRunnerProjDirectory>$([MSBuild]::NormalizeDirectory('$(LibrariesProjectRoot)', 'Common', tests, 'AppleTestRunner'))</AppleTestRunnerProjDirectory>
<AndroidAppBuilderProjDirectory>$([MSBuild]::NormalizeDirectory('$(MonoProjectRoot)', 'msbuild', 'AndroidAppBuilder'))</AndroidAppBuilderProjDirectory> <AndroidAppBuilderProjDirectory>$([MSBuild]::NormalizeDirectory('$(RepoTasksDir)', 'mobile.tasks', 'AndroidAppBuilder'))</AndroidAppBuilderProjDirectory>
<AndroidTestRunnerProjDirectory>$([MSBuild]::NormalizeDirectory('$(MonoProjectRoot)', 'msbuild', 'AndroidTestRunner'))</AndroidTestRunnerProjDirectory> <AndroidTestRunnerProjDirectory>$([MSBuild]::NormalizeDirectory('$(LibrariesProjectRoot)', 'Common', tests, 'AndroidTestRunner'))</AndroidTestRunnerProjDirectory>
<MonoAOTCompilerProjDirectory>$([MSBuild]::NormalizeDirectory('$(MonoProjectRoot)', 'msbuild', 'AotCompilerTask'))</MonoAOTCompilerProjDirectory> <MonoAOTCompilerProjDirectory>$([MSBuild]::NormalizeDirectory('$(RepoTasksDir)', 'mobile.tasks', 'AotCompilerTask'))</MonoAOTCompilerProjDirectory>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@ -885,18 +885,6 @@
<Import Project="Directory.Build.targets" /> <Import Project="Directory.Build.targets" />
<Target Name="BuildAppleAppBuilder" Condition="'$(TargetsiOS)' == 'true' or '$(TargetstvOS)' == 'true'">
<MSBuild Projects="$(AppleAppBuilderProjDirectory)AppleAppBuilder.csproj"
Properties="Configuration=$(Configuration);Platform=$(HostArch)"
Targets="Restore;Build" />
</Target>
<Target Name="BuildAndroidAppBuilder" Condition="'$(TargetsAndroid)' == 'true'">
<MSBuild Projects="$(AndroidAppBuilderProjDirectory)AndroidAppBuilder.csproj"
Properties="Configuration=$(Configuration);Platform=$(HostArch)"
Targets="Restore;Build" />
</Target>
<!-- Need to publish this since it references System.Reflection.MetadataLoadContext --> <!-- Need to publish this since it references System.Reflection.MetadataLoadContext -->
<Target Name="BuildWasmAppBuilder" Condition="'$(TargetsBrowser)' == 'true'"> <Target Name="BuildWasmAppBuilder" Condition="'$(TargetsBrowser)' == 'true'">
<MSBuild Projects="$(MonoProjectRoot)msbuild\WasmAppBuilder\WasmAppBuilder.csproj" <MSBuild Projects="$(MonoProjectRoot)msbuild\WasmAppBuilder\WasmAppBuilder.csproj"
@ -904,15 +892,9 @@
Targets="Restore;Build;Publish"/> Targets="Restore;Build;Publish"/>
</Target> </Target>
<Target Name="BuildMonoAOTCompilerTask">
<MSBuild Projects="$(MonoProjectRoot)msbuild\AotCompilerTask\MonoAOTCompiler.csproj"
Properties="Configuration=$(Configuration)"
Targets="Restore;Build" />
</Target>
<!-- Ordering matters! Overwriting the Build target. --> <!-- Ordering matters! Overwriting the Build target. -->
<!-- General targets --> <!-- General targets -->
<Target Name="Build" DependsOnTargets="BuildMonoRuntimeUnix;BuildMonoRuntimeWindows;BuildAppleAppBuilder;BuildAndroidAppBuilder;BuildWasmAppBuilder;BuildMonoAOTCompilerTask"> <Target Name="Build" DependsOnTargets="BuildMonoRuntimeUnix;BuildMonoRuntimeWindows;BuildWasmAppBuilder;">
<PropertyGroup> <PropertyGroup>
<_MonoRuntimeFilePath Condition="'$(TargetsWindows)' == 'true' and '$(Platform)' == 'x64'">$(MonoObjDir)x64\Bin\$(Configuration)\mono-2.0-sgen.dll</_MonoRuntimeFilePath> <_MonoRuntimeFilePath Condition="'$(TargetsWindows)' == 'true' and '$(Platform)' == 'x64'">$(MonoObjDir)x64\Bin\$(Configuration)\mono-2.0-sgen.dll</_MonoRuntimeFilePath>
<_MonoRuntimeFilePath Condition="'$(TargetsWindows)' == 'true' and '$(Platform)' == 'x86'">$(MonoObjDir)Win32\Bin\$(Configuration)\mono-2.0-sgen.dll</_MonoRuntimeFilePath> <_MonoRuntimeFilePath Condition="'$(TargetsWindows)' == 'true' and '$(Platform)' == 'x86'">$(MonoObjDir)Win32\Bin\$(Configuration)\mono-2.0-sgen.dll</_MonoRuntimeFilePath>

View File

@ -5,7 +5,7 @@ DOTNET := ../../../../.././dotnet.sh
#export ANDROID_NDK_ROOT=/path/to/android/ndk #export ANDROID_NDK_ROOT=/path/to/android/ndk
#export ANDROID_SDK_ROOT=/path/to/android/sdk #export ANDROID_SDK_ROOT=/path/to/android/sdk
all: runtimepack bundle all: bundle
bundle: clean bundle: clean
$(DOTNET) build -c $(MONO_CONFIG) Program.csproj $(DOTNET) build -c $(MONO_CONFIG) Program.csproj
@ -14,8 +14,5 @@ bundle: clean
deploy-launch: bundle deploy-launch: bundle
$(DOTNET) msbuild /t:ReinstallAndLaunch $(DOTNET) msbuild /t:ReinstallAndLaunch
runtimepack:
../../../../.././build.sh -c $(MONO_CONFIG) -os Android -arch $(MONO_ARCH) -subset Mono+Libs /p:DisableCrossgen=true
clean: clean:
rm -rf bin rm -rf bin

View File

@ -7,7 +7,8 @@
<TargetArchitecture Condition="'$(TargetArchitecture)'==''">x64</TargetArchitecture> <TargetArchitecture Condition="'$(TargetArchitecture)'==''">x64</TargetArchitecture>
<RuntimePackDir>$(ArtifactsDir)bin\lib-runtime-packs\$(NetCoreAppCurrent)-Android-$(Configuration)-$(TargetArchitecture)\runtimes\android-$(TargetArchitecture)</RuntimePackDir> <RuntimePackDir>$(ArtifactsDir)bin\lib-runtime-packs\$(NetCoreAppCurrent)-Android-$(Configuration)-$(TargetArchitecture)\runtimes\android-$(TargetArchitecture)</RuntimePackDir>
<BundleDir>$(MSBuildThisFileDirectory)\bin\bundle</BundleDir> <BundleDir>$(MSBuildThisFileDirectory)\bin\bundle</BundleDir>
<AndroidAppBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AndroidAppBuilder', '$(NetCoreAppCurrent)-$(Configuration)'))</AndroidAppBuilderDir> <AndroidAppBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AndroidAppBuilder', 'Debug', '$(NetCoreAppCurrent)'))</AndroidAppBuilderDir>
</PropertyGroup> </PropertyGroup>
<Target Name="RebuildAndroidAppBuilder"> <Target Name="RebuildAndroidAppBuilder">

View File

@ -1,11 +1,11 @@
MONO_CONFIG=Debug MONO_CONFIG=Debug
MONO_ARCH=arm64 MONO_ARCH=x64
DOTNET := ../../../../.././dotnet.sh DOTNET := ../../../../.././dotnet.sh
USE_LLVM=True USE_LLVM=True
# usage example: # usage example:
# 'make all MONO_ARCH=x64 MONO_CONFIG=Release' to build the app for simulator # 'make all MONO_ARCH=x64 MONO_CONFIG=Release' to build the app for simulator
all: runtimepack bundle all: bundle
program: program:
$(DOTNET) build -c $(MONO_CONFIG) Program.csproj $(DOTNET) build -c $(MONO_CONFIG) Program.csproj
@ -17,8 +17,5 @@ bundle: clean program
deploy-sim: deploy-sim:
$(DOTNET) msbuild /t:IosDeployToSimulator /p:Configuration=$(MONO_CONFIG) /p:TargetArchitecture=$(MONO_ARCH) $(DOTNET) msbuild /t:IosDeployToSimulator /p:Configuration=$(MONO_CONFIG) /p:TargetArchitecture=$(MONO_ARCH)
runtimepack:
../../../../.././build.sh -c $(MONO_CONFIG) -os iOS -arch $(MONO_ARCH) -subset Mono+Libs /p:DisableCrossgen=true
clean: clean:
rm -rf bin rm -rf bin

View File

@ -9,9 +9,11 @@
<RuntimePackDir>$(ArtifactsDir)bin\lib-runtime-packs\$(NetCoreAppCurrent)-iOS-$(Configuration)-$(TargetArchitecture)\runtimes\ios-$(TargetArchitecture)</RuntimePackDir> <RuntimePackDir>$(ArtifactsDir)bin\lib-runtime-packs\$(NetCoreAppCurrent)-iOS-$(Configuration)-$(TargetArchitecture)\runtimes\ios-$(TargetArchitecture)</RuntimePackDir>
<MonoRuntimeDir>$(ArtifactsDir)bin\mono\iOS.$(TargetArchitecture).$(Configuration)</MonoRuntimeDir> <MonoRuntimeDir>$(ArtifactsDir)bin\mono\iOS.$(TargetArchitecture).$(Configuration)</MonoRuntimeDir>
<BundleDir>$(MSBuildThisFileDirectory)\bin\bundle</BundleDir> <BundleDir>$(MSBuildThisFileDirectory)\bin\bundle</BundleDir>
<AppleAppBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AppleAppBuilder', '$(NetCoreAppCurrent)-$(Configuration)'))</AppleAppBuilderDir> <AppleAppBuilderDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AppleAppBuilder', 'Debug', '$(NetCoreAppCurrent)'))</AppleAppBuilderDir>
<MonoAOTCompilerDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'MonoAOTCompiler', '$(NetCoreAppCurrent)-$(Configuration)'))</MonoAOTCompilerDir> <MonoAOTCompilerDir>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'MonoAOTCompiler', 'Debug', '$(NetCoreAppCurrent)'))</MonoAOTCompilerDir>
<RunAOTCompilation Condition="'$(TargetArchitecture)' == 'arm64' or '$(TargetArchitecture)' == 'arm'">true</RunAOTCompilation> <RunAOTCompilation Condition="'$(TargetArchitecture)' == 'arm64' or '$(TargetArchitecture)' == 'arm'">true</RunAOTCompilation>
<Optimized Condition="'$(Configuration)' != 'Debug'">true</Optimized>
<Optimized Condition="'$(Configuration)' == 'Debug'">false</Optimized>
</PropertyGroup> </PropertyGroup>
<Target Name="RebuildAppleAppBuilder"> <Target Name="RebuildAppleAppBuilder">
@ -84,7 +86,7 @@
BuildAppBundle="True" BuildAppBundle="True"
DevTeamProvisioning="$(DevTeamProvisioning)" DevTeamProvisioning="$(DevTeamProvisioning)"
OutputDirectory="$(BundleDir)" OutputDirectory="$(BundleDir)"
Optimized="True" Optimized="$(Optimized)"
AppDir="$(BundleDir)"> AppDir="$(BundleDir)">
<Output TaskParameter="AppBundlePath" PropertyName="AppBundlePath" /> <Output TaskParameter="AppBundlePath" PropertyName="AppBundlePath" />
<Output TaskParameter="XcodeProjectPath" PropertyName="XcodeProjectPath" /> <Output TaskParameter="XcodeProjectPath" PropertyName="XcodeProjectPath" />

View File

@ -1,8 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>$(NetCoreAppCurrent)</TargetFrameworks>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors> <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems> <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
<Nullable>enable</Nullable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="Templates\*.*" /> <EmbeddedResource Include="Templates\*.*" />

View File

@ -1,8 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>$(NetCoreAppCurrent)</TargetFrameworks>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors> <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems> <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
<Nullable>enable</Nullable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Build" Version="$(RefOnlyMicrosoftBuildVersion)" /> <PackageReference Include="Microsoft.Build" Version="$(RefOnlyMicrosoftBuildVersion)" />
@ -14,4 +16,9 @@
<Compile Include="MonoAOTCompiler.cs" /> <Compile Include="MonoAOTCompiler.cs" />
<Compile Include="Utils.cs" /> <Compile Include="Utils.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Content Include="MonoAOTCompiler.props">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project> </Project>

View File

@ -1,8 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>$(NetCoreAppCurrent)</TargetFrameworks>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors> <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems> <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
<Nullable>enable</Nullable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="Templates\*.*" /> <EmbeddedResource Include="Templates\*.*" />

View File

@ -0,0 +1,48 @@
<Project Sdk="Microsoft.Build.Traversal">
<ItemGroup>
<ProjectReference Include="$(MSBuildThisFileDirectory)**\*.csproj" Exclude="$(MSBuildProjectFullPath)" />
<ProjectReference Remove="$(MSBuildThisFileDirectory)mobile.tasks\AndroidAppBuilder\AndroidAppBuilder.csproj"
Condition="'$(TargetOS)' != 'Android'" />
<ProjectReference Remove="$(MSBuildThisFileDirectory)mobile.tasks\AppleAppBuilder\AppleAppBuilder.csproj"
Condition="'$(TargetOS)' != 'iOS' and '$(TargetOS)' != 'tvOS'" />
<ProjectReference Remove="$(MSBuildThisFileDirectory)mobile.tasks\AotCompilerTask\MonoAOTCompiler.csproj"
Condition="'$(TargetsMobile)' != 'true'" />
</ItemGroup>
<!--
Use synthetic inputs/outputs to avoid building it all the time. This should let devs build with
MSBuild node reuse enabled (the Arcade default). If it were built every time, it would hit file
locking issues vs. the persistent nodes that loaded the task DLL for the previous build. It
isn't particularly accurate, but better than nothing.
-->
<Target Name="BuildAndRestoreIncrementally"
DependsOnTargets="GetTasksSrc"
Inputs="@(TasksSrc)"
Outputs="$(TasksIntermediateFile)">
<ItemGroup>
<TaskProject Include="$(MSBuildProjectFullPath)" />
</ItemGroup>
<MSBuild Projects="@(TaskProject)"
Properties="MSBuildRestoreSessionId=$([System.Guid]::NewGuid());Configuration=Debug;Platform=AnyCPU"
Targets="Restore"/>
<MSBuild Projects="@(TaskProject)"
Properties="Configuration=Debug;Platform=AnyCPU"
Targets="Build"/>
<WriteLinesToFile File="$(TasksIntermediateFile)"
Lines="$(TasksIntermediateFile)"
Overwrite="true" />
</Target>
<Target Name="GetTasksSrc">
<PropertyGroup>
<TasksIntermediateFile>$([MSBuild]::NormalizePath('$(ArtifactsObjDir)', '$(MSBuildProjectName)', 'Debug', 'build-semaphore.txt'))</TasksIntermediateFile>
</PropertyGroup>
<ItemGroup>
<TasksSrc Include="$(MSBuildThisFileDirectory)**\*.cs*;$(MSBuildThisFileDirectory)**\*.*proj" />
</ItemGroup>
</Target>
</Project>