diff --git a/build/Repositories.props b/build/Repositories.props
index 4048a5a71d..adba85b527 100644
--- a/build/Repositories.props
+++ b/build/Repositories.props
@@ -36,18 +36,18 @@
Build tools will *verify* that these repos will be unaffected
by the patch update and do not need updating.
-->
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build/RepositoryBuild.targets b/build/RepositoryBuild.targets
index 6d119bbd50..4ff447a430 100644
--- a/build/RepositoryBuild.targets
+++ b/build/RepositoryBuild.targets
@@ -51,6 +51,7 @@
+ $(RepositoryBuildArguments) /p:DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath)
$(RepositoryBuildArguments) /p:BuildNumber=$(BuildNumber) /p:Configuration=$(Configuration) /p:CommitHash=$(CommitHash)
$(RepositoryBuildArguments) /noconsolelogger '/l:RepoTasks.FlowLogger,$(MSBuildThisFileDirectory)tasks\bin\publish\RepoTasks.dll;Summary;FlowId=$(RepositoryToBuild)'
diff --git a/build/dependencies.props b/build/dependencies.props
index e6e0b0fad2..312df26335 100644
--- a/build/dependencies.props
+++ b/build/dependencies.props
@@ -21,7 +21,10 @@
-
+
+ RuntimeFrameworkVersion
+ netcoreapp2.0
+
@@ -35,16 +38,19 @@
KRB2004
+ MicrosoftCodeAnalysisCommonToolingPackageVersion
KRB2004
+ MicrosoftCodeAnalysisCSharpToolingPackageVersion
KRB2004
+ MicrosoftCodeAnalysisWorkspacesCommonToolingPackageVersion
@@ -135,6 +141,7 @@
KRB2004
+ NewtonsoftJsonToolingPackageVersion
@@ -171,6 +178,7 @@
KRB2004
+ EFBenchmarksXunitAssertPackageVersion
@@ -181,6 +189,7 @@
KRB2004
+ XunitStablePackageVersion
diff --git a/build/repo.targets b/build/repo.targets
index 7a7de53283..0a20957aaf 100644
--- a/build/repo.targets
+++ b/build/repo.targets
@@ -18,6 +18,7 @@
$(IntermediateDir)mirror\
$(IntermediateDir)ext\
+ $(IntermediateDir)dependencies.props
Patch20_
$(PrepareDependsOn);CleanArtifacts;CleanUniverseArtifacts
@@ -40,6 +41,19 @@
DestinationFolder="$(IntermediateMirrorPackageDir)" />
+
+
+ <_LineupPackages Include="@(ExternalDependency)" />
+ <_LineupPackages Include="%(ArtifactInfo.PackageId)" Version="%(ArtifactInfo.Version)" Condition=" '%(ArtifactInfo.ArtifactType)' == 'NuGetPackage' " />
+ <_LineupPackages Include="%(ShippedArtifactInfo.PackageId)" Version="%(ShippedArtifactInfo.Version)" Condition=" '%(ShippedArtifactInfo.ArtifactType)' == 'NuGetPackage' " />
+
+
+
+
+
+
@@ -125,7 +139,7 @@
+ DependsOnTargets="_PrepareRepositories;_CreateRepositoriesListWithCommits;GeneratePackageVersionPropsFile;ComputeGraph;_BuildRepositories" />
();
+ var versionElements = new List();
+ foreach (var pkg in Packages)
+ {
+ var packageVersion = pkg.GetMetadata("Version");
+
+ if (string.IsNullOrEmpty(packageVersion))
+ {
+ Log.LogError("Package {0} is missing the Version metadata", pkg.ItemSpec);
+ continue;
+ }
+
+
+ string packageVarName;
+ if (!string.IsNullOrEmpty(pkg.GetMetadata("VariableName")))
+ {
+ packageVarName = pkg.GetMetadata("VariableName");
+ if (!packageVarName.EndsWith("Version", StringComparison.Ordinal))
+ {
+ Log.LogError("VariableName for {0} must end in 'Version'", pkg.ItemSpec);
+ continue;
+ }
+ }
+ else
+ {
+ var sb = new StringBuilder();
+ var first = true;
+ foreach (var ch in pkg.ItemSpec)
+ {
+ if (ch == '.')
+ {
+ first = true;
+ continue;
+ }
+
+ if (first)
+ {
+ first = false;
+ sb.Append(char.ToUpperInvariant(ch));
+ }
+ else
+ {
+ sb.Append(ch);
+ }
+ }
+ sb.Append("PackageVersion");
+ packageVarName = sb.ToString();
+ }
+
+ var packageTfm = pkg.GetMetadata("TargetFramework");
+ var key = $"{packageVarName}/{packageTfm}";
+ if (varNames.Contains(key))
+ {
+ Log.LogError("Multiple packages would produce {0} in the generated dependencies.props file. Set VariableName to differentiate the packages manually", key);
+ continue;
+ }
+ varNames.Add(key);
+ var elem = new XElement(packageVarName, packageVersion);
+ if (!string.IsNullOrEmpty(packageTfm))
+ {
+ elem.Add(new XAttribute("Condition", $" '$(TargetFramework)' == '{packageTfm}' "));
+ }
+ versionElements.Add(elem);
+ }
+
+ foreach (var item in versionElements.OrderBy(p => p.Name.ToString()))
+ {
+ props.Add(item);
+ }
+
+ var settings = new XmlWriterSettings
+ {
+ OmitXmlDeclaration = true,
+ Indent = true,
+ };
+ using (var writer = XmlWriter.Create(OutputPath, settings))
+ {
+ Log.LogMessage(MessageImportance.High, $"Generate {OutputPath}");
+ doc.Save(writer);
+ }
+ return !Log.HasLoggedErrors;
+ }
+ }
+}
diff --git a/build/tasks/RepoTasks.tasks b/build/tasks/RepoTasks.tasks
index d2df6c836a..da9cb26603 100644
--- a/build/tasks/RepoTasks.tasks
+++ b/build/tasks/RepoTasks.tasks
@@ -7,5 +7,6 @@
+