Fixup incremental builds with ApplicationPartsDiscovery (dotnet/aspnetcore-tooling#693)
\n\nCommit migrated from df3c4d533a
This commit is contained in:
parent
64f56b7607
commit
7a510b311d
|
|
@ -25,12 +25,13 @@ Copyright (c) .NET Foundation. All rights reserved.
|
||||||
</CoreCompileDependsOn>
|
</CoreCompileDependsOn>
|
||||||
|
|
||||||
<_MvcApplicationPartAttributeGeneratedFile>$(IntermediateOutputPath)$(TargetName).MvcApplicationPartsAssemblyInfo$(DefaultLanguageSourceExtension)</_MvcApplicationPartAttributeGeneratedFile>
|
<_MvcApplicationPartAttributeGeneratedFile>$(IntermediateOutputPath)$(TargetName).MvcApplicationPartsAssemblyInfo$(DefaultLanguageSourceExtension)</_MvcApplicationPartAttributeGeneratedFile>
|
||||||
|
<_MvcApplicationPartCacheFile>$(IntermediateOutputPath)$(TargetName).MvcApplicationPartsAssemblyInfo.cache</_MvcApplicationPartCacheFile>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<Target
|
<Target
|
||||||
Name="_DiscoverMvcApplicationParts"
|
Name="_DiscoverMvcApplicationParts"
|
||||||
Inputs="$(ProjectAssetsFile);$(MSBuildAllProjects)"
|
Inputs="$(ProjectAssetsFile);$(MSBuildAllProjects)"
|
||||||
Outputs="$(_MvcApplicationPartAttributeGeneratedFile)"
|
Outputs="$(_MvcApplicationPartCacheFile)"
|
||||||
DependsOnTargets="ResolveAssemblyReferences">
|
DependsOnTargets="ResolveAssemblyReferences">
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
@ -73,7 +74,7 @@ Copyright (c) .NET Foundation. All rights reserved.
|
||||||
In this case, delete the file so that future incremental builds can no longer pick it up.
|
In this case, delete the file so that future incremental builds can no longer pick it up.
|
||||||
-->
|
-->
|
||||||
<Delete
|
<Delete
|
||||||
File="$(_MvcApplicationPartAttributeGeneratedFile)"
|
Files="$(_MvcApplicationPartAttributeGeneratedFile)"
|
||||||
Condition="'@(_ApplicationPartAssemblyNames->Count())' == '0' AND Exists('$(_MvcApplicationPartAttributeGeneratedFile)')" />
|
Condition="'@(_ApplicationPartAssemblyNames->Count())' == '0' AND Exists('$(_MvcApplicationPartAttributeGeneratedFile)')" />
|
||||||
|
|
||||||
<ItemGroup Condition="Exists('$(_MvcApplicationPartAttributeGeneratedFile)')">
|
<ItemGroup Condition="Exists('$(_MvcApplicationPartAttributeGeneratedFile)')">
|
||||||
|
|
@ -82,6 +83,8 @@ Copyright (c) .NET Foundation. All rights reserved.
|
||||||
|
|
||||||
<CompileBefore Remove="$(_MvcApplicationPartAttributeGeneratedFile)" Condition="'$(Language)'=='F#'" />
|
<CompileBefore Remove="$(_MvcApplicationPartAttributeGeneratedFile)" Condition="'$(Language)'=='F#'" />
|
||||||
<CompileBefore Include="$(_MvcApplicationPartAttributeGeneratedFile)" Condition="'$(Language)'=='F#'" />
|
<CompileBefore Include="$(_MvcApplicationPartAttributeGeneratedFile)" Condition="'$(Language)'=='F#'" />
|
||||||
|
|
||||||
|
<FileWrites Include="$(_MvcApplicationPartAttributeGeneratedFile)"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|
@ -89,11 +92,11 @@ Copyright (c) .NET Foundation. All rights reserved.
|
||||||
This is required to play nicely with incremental builds.
|
This is required to play nicely with incremental builds.
|
||||||
-->
|
-->
|
||||||
<Touch
|
<Touch
|
||||||
Files="$(_MvcApplicationPartAttributeGeneratedFile)"
|
Files="$(_MvcApplicationPartCacheFile)"
|
||||||
AlwaysCreate="true" />
|
AlwaysCreate="true" />
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<FileWrites Include="$(_MvcApplicationPartAttributeGeneratedFile)" />
|
<FileWrites Include="$(_MvcApplicationPartCacheFile)" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Target>
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -45,9 +45,10 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests
|
||||||
|
|
||||||
Assert.BuildPassed(result);
|
Assert.BuildPassed(result);
|
||||||
|
|
||||||
Assert.FileExists(result, IntermediateOutputPath, "SimpleMvc.MvcApplicationPartsAssemblyInfo.cs");
|
Assert.FileDoesNotExist(result, IntermediateOutputPath, "SimpleMvc.MvcApplicationPartsAssemblyInfo.cs");
|
||||||
// We should produced an empty file for build incrementalism
|
|
||||||
Assert.Empty(File.ReadAllText(Path.Combine(result.Project.DirectoryPath, IntermediateOutputPath, "SimpleMvc.MvcApplicationPartsAssemblyInfo.cs")));
|
// We should produced a cache file for build incrementalism
|
||||||
|
Assert.FileExists(result, IntermediateOutputPath, "SimpleMvc.MvcApplicationPartsAssemblyInfo.cache");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
@ -59,18 +60,30 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests
|
||||||
Assert.BuildPassed(result);
|
Assert.BuildPassed(result);
|
||||||
|
|
||||||
var generatedAttributeFile = Path.Combine(IntermediateOutputPath, "AppWithP2PReference.MvcApplicationPartsAssemblyInfo.cs");
|
var generatedAttributeFile = Path.Combine(IntermediateOutputPath, "AppWithP2PReference.MvcApplicationPartsAssemblyInfo.cs");
|
||||||
|
var cacheFile = Path.Combine(IntermediateOutputPath, "AppWithP2PReference.MvcApplicationPartsAssemblyInfo.cache");
|
||||||
|
var outputFile = Path.Combine(IntermediateOutputPath, "AppWithP2PReference.dll");
|
||||||
Assert.FileExists(result, generatedAttributeFile);
|
Assert.FileExists(result, generatedAttributeFile);
|
||||||
Assert.FileContains(result, generatedAttributeFile, "[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute(\"ClassLibrary\")]");
|
Assert.FileContains(result, generatedAttributeFile, "[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute(\"ClassLibrary\")]");
|
||||||
|
|
||||||
var thumbPrint = GetThumbPrint(generatedAttributeFile);
|
var generatedFilethumbPrint = GetThumbPrint(generatedAttributeFile);
|
||||||
|
var cacheFileThumbPrint = GetThumbPrint(cacheFile);
|
||||||
|
var outputFileThumbPrint = GetThumbPrint(outputFile);
|
||||||
|
|
||||||
result = await DotnetMSBuild("Build");
|
await AssertIncrementalBuild();
|
||||||
|
await AssertIncrementalBuild();
|
||||||
|
|
||||||
Assert.BuildPassed(result);
|
async Task AssertIncrementalBuild()
|
||||||
|
{
|
||||||
|
result = await DotnetMSBuild("Build");
|
||||||
|
|
||||||
Assert.FileExists(result, generatedAttributeFile);
|
Assert.BuildPassed(result);
|
||||||
Assert.Equal(thumbPrint, GetThumbPrint(generatedAttributeFile));
|
|
||||||
Assert.AssemblyHasAttribute(result, Path.Combine(OutputPath, "AppWithP2PReference.dll"), "Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute");
|
Assert.FileExists(result, generatedAttributeFile);
|
||||||
|
Assert.Equal(generatedFilethumbPrint, GetThumbPrint(generatedAttributeFile));
|
||||||
|
Assert.Equal(cacheFileThumbPrint, GetThumbPrint(cacheFile));
|
||||||
|
Assert.Equal(outputFileThumbPrint, GetThumbPrint(outputFile));
|
||||||
|
Assert.AssemblyHasAttribute(result, Path.Combine(OutputPath, "AppWithP2PReference.dll"), "Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Regression test for https://github.com/aspnet/AspNetCore/issues/11315
|
// Regression test for https://github.com/aspnet/AspNetCore/issues/11315
|
||||||
|
|
@ -128,17 +141,30 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests
|
||||||
Assert.BuildPassed(result);
|
Assert.BuildPassed(result);
|
||||||
|
|
||||||
var generatedAttributeFile = Path.Combine(IntermediateOutputPath, "SimpleMvc.MvcApplicationPartsAssemblyInfo.cs");
|
var generatedAttributeFile = Path.Combine(IntermediateOutputPath, "SimpleMvc.MvcApplicationPartsAssemblyInfo.cs");
|
||||||
Assert.FileExists(result, generatedAttributeFile);
|
var cacheFile = Path.Combine(IntermediateOutputPath, "SimpleMvc.MvcApplicationPartsAssemblyInfo.cache");
|
||||||
Assert.Empty(File.ReadAllText(Path.Combine(result.Project.DirectoryPath, generatedAttributeFile)));
|
var outputFile = Path.Combine(IntermediateOutputPath, "SimpleMvc.dll");
|
||||||
|
Assert.FileDoesNotExist(result, generatedAttributeFile);
|
||||||
|
Assert.FileExists(result, cacheFile);
|
||||||
|
|
||||||
var thumbPrint = GetThumbPrint(generatedAttributeFile);
|
var cacheFilethumbPrint = GetThumbPrint(cacheFile);
|
||||||
|
var outputFilethumbPrint = GetThumbPrint(outputFile);
|
||||||
|
|
||||||
result = await DotnetMSBuild("Build");
|
// Couple rounds of incremental builds.
|
||||||
|
await AssertIncrementalBuild();
|
||||||
|
await AssertIncrementalBuild();
|
||||||
|
await AssertIncrementalBuild();
|
||||||
|
|
||||||
Assert.BuildPassed(result);
|
async Task AssertIncrementalBuild()
|
||||||
|
{
|
||||||
|
result = await DotnetMSBuild("Build");
|
||||||
|
|
||||||
Assert.FileExists(result, generatedAttributeFile);
|
Assert.BuildPassed(result);
|
||||||
Assert.Equal(thumbPrint, GetThumbPrint(generatedAttributeFile));
|
|
||||||
|
Assert.FileDoesNotExist(result, generatedAttributeFile);
|
||||||
|
Assert.FileExists(result, cacheFile);
|
||||||
|
Assert.Equal(cacheFilethumbPrint, GetThumbPrint(cacheFile));
|
||||||
|
Assert.Equal(outputFilethumbPrint, GetThumbPrint(outputFile));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue