diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.GenerateAssemblyInfo.targets b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.GenerateAssemblyInfo.targets
index 73a9d49109d4..4bd03057d27e 100644
--- a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.GenerateAssemblyInfo.targets
+++ b/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.GenerateAssemblyInfo.targets
@@ -96,6 +96,11 @@ Copyright (c) .NET Foundation. All rights reserved.
<_Parameter1>$(AssemblyVersion)
+
+ <_Parameter1>RepositoryUrl
+ <_Parameter2 Condition="'$(RepositoryUrl)' != ''">$(RepositoryUrl)
+ <_Parameter2 Condition="'$(RepositoryUrl)' == ''">$(PrivateRepositoryUrl)
+
<_Parameter1>$(NeutralLanguage)
diff --git a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToControlGeneratedAssemblyInfo.cs b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToControlGeneratedAssemblyInfo.cs
index 09ed07100c4b..e349d820a064 100644
--- a/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToControlGeneratedAssemblyInfo.cs
+++ b/src/Tests/Microsoft.NET.Build.Tests/GivenThatWeWantToControlGeneratedAssemblyInfo.cs
@@ -595,5 +595,38 @@ public void GenerateUserSecretsForTestProject()
AssemblyInfo.Get(assemblyPath)["UserSecretsIdAttribute"].Should().Be("SecretsIdValue");
}
+
+ [Theory]
+ [InlineData(true)]
+ [InlineData(false)]
+ public void It_includes_repository_url(bool privateRepo)
+ {
+ var fakeUrl = "fakeUrl";
+ var testProject = new TestProject()
+ {
+ Name = "RepoUrlProject",
+ IsSdkProject = true,
+ TargetFrameworks = "netcoreapp3.1"
+ };
+
+ if (privateRepo)
+ {
+ testProject.AdditionalProperties["PublishRepositoryUrl"] = "true";
+ testProject.AdditionalProperties["PrivateRepositoryUrl"] = fakeUrl;
+ }
+ else
+ {
+ testProject.AdditionalProperties["RepositoryUrl"] = fakeUrl;
+ }
+
+ var testAsset = _testAssetsManager.CreateTestProject(testProject);
+
+ var buildCommand = new BuildCommand(Log, Path.Combine(testAsset.TestRoot, testProject.Name));
+ buildCommand.Execute().Should().Pass();
+
+ var assemblyPath = Path.Combine(buildCommand.GetOutputDirectory("netcoreapp3.1").FullName, testProject.Name + ".dll");
+
+ AssemblyInfo.Get(assemblyPath)["AssemblyMetadataAttribute"].Should().Be("RepositoryUrl:" + fakeUrl);
+ }
}
}