Skip to content

Commit ec9f5fc

Browse files
author
Peter Huene
authored
Merge pull request #3441 from peterhuene/fix-gen-tasks-on-cache-invalidation
Fix regeneration of files when asset cache changes.
2 parents 54d18a4 + c60aa0e commit ec9f5fc

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ Copyright (c) .NET Foundation. All rights reserved.
4646

4747
<ItemGroup>
4848
<GenerateRuntimeConfigurationFilesInputs Include="$(ProjectAssetsFile)" />
49+
<GenerateRuntimeConfigurationFilesInputs Include="$(ProjectAssetsCacheFile)" />
4950
<GenerateRuntimeConfigurationFilesInputs Include="$(UserRuntimeConfig)" Condition=" Exists($(UserRuntimeConfig)) " />
5051
</ItemGroup>
5152

@@ -153,7 +154,7 @@ Copyright (c) .NET Foundation. All rights reserved.
153154
_ComputePackageReferencePublish"
154155
BeforeTargets="CopyFilesToOutputDirectory"
155156
Condition="'$(GenerateDependencyFile)' == 'true'"
156-
Inputs="$(ProjectAssetsFile);$(MSBuildAllProjects)"
157+
Inputs="$(ProjectAssetsFile);$(ProjectAssetsCacheFile);$(MSBuildAllProjects)"
157158
Outputs="$(ProjectDepsFilePath)">
158159

159160
<ItemGroup>

src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToBuildANetCoreApp.cs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -720,5 +720,50 @@ public void It_builds_with_unicode_characters_in_path()
720720
.Should()
721721
.Pass();
722722
}
723+
724+
[Fact]
725+
public void It_regenerates_files_if_self_contained_changes()
726+
{
727+
const string TFM = "netcoreapp3.0";
728+
729+
var runtimeIdentifier = EnvironmentInfo.GetCompatibleRid(TFM);
730+
731+
var testProject = new TestProject()
732+
{
733+
Name = "GenerateFilesTest",
734+
TargetFrameworks = TFM,
735+
RuntimeIdentifier = runtimeIdentifier,
736+
IsSdkProject = true,
737+
IsExe = true
738+
};
739+
740+
var testAsset = _testAssetsManager
741+
.CreateTestProject(testProject)
742+
.Restore(Log, testProject.Name);
743+
744+
var buildCommand = new BuildCommand(Log, Path.Combine(testAsset.TestRoot, testProject.Name));
745+
746+
buildCommand
747+
.Execute()
748+
.Should()
749+
.Pass();
750+
751+
var outputPath = buildCommand.GetOutputDirectory(targetFramework: TFM, runtimeIdentifier: runtimeIdentifier).FullName;
752+
var depsFilePath = Path.Combine(outputPath, $"{testProject.Name}.deps.json");
753+
var runtimeConfigPath = Path.Combine(outputPath, $"{testProject.Name}.runtimeconfig.json");
754+
755+
var depsFileLastWriteTime = File.GetLastWriteTimeUtc(depsFilePath);
756+
var runtimeConfigLastWriteTime = File.GetLastWriteTimeUtc(runtimeConfigPath);
757+
758+
WaitForUtcNowToAdvance();
759+
760+
buildCommand
761+
.Execute("/p:SelfContained=false")
762+
.Should()
763+
.Pass();
764+
765+
depsFileLastWriteTime.Should().NotBe(File.GetLastWriteTimeUtc(depsFilePath));
766+
runtimeConfigLastWriteTime.Should().NotBe(File.GetLastWriteTimeUtc(runtimeConfigPath));
767+
}
723768
}
724769
}

0 commit comments

Comments
 (0)