Update how PackageReference versions are set
Changes: - Remove floating versions - Disable myget feeds during a Universe build - Use package-specific MSBuild variables. Pattern = `packageId.Pascalize() + "PackageVersion"`, with a few exceptions. - Remove myget feeds during build - Remove obsolete 'GenerateLineup' targets/tasks
This commit is contained in:
parent
c53c133bcb
commit
611b6a23ad
|
|
@ -2,8 +2,6 @@
|
|||
<configuration>
|
||||
<packageSources>
|
||||
<clear />
|
||||
<add key="AspNetCore" value="https://dotnet.myget.org/F/aspnetcore-ci-release/api/v3/index.json" />
|
||||
<add key="AspNetCoreTools" value="https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json" />
|
||||
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
|
||||
</packageSources>
|
||||
</configuration>
|
||||
|
|
@ -29,14 +29,6 @@
|
|||
<Output TaskParameter="TargetOutputs" ItemName="PinnedArtifactInfo" />
|
||||
</MSBuild>
|
||||
|
||||
<RepoTasks.GenerateLineup
|
||||
Artifacts="@(PinnedArtifactInfo)"
|
||||
Repository="%(RepositoryBuildOrder.Identity)"
|
||||
OutputPath="%(RepositoryBuildOrder.RepositoryPath)\build\dependencies.g.targets"
|
||||
UseFloatingVersions="false"
|
||||
Condition="'%(RepositoryBuildOrder.RepositoryPath)' != ''"
|
||||
BuildNumber="$(BuildNumber)" />
|
||||
|
||||
<MSBuild
|
||||
Projects="@(BatchedRepository)"
|
||||
BuildInParallel="$(BatchBuilds)"
|
||||
|
|
@ -47,6 +39,8 @@
|
|||
|
||||
<Target Name="_BuildRepository">
|
||||
<PropertyGroup>
|
||||
<!-- Should reduce allowable package feeds to only nuget.org. -->
|
||||
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:AspNetUniverseBuildOffline=true</RepositoryBuildArguments>
|
||||
<!-- If there are duplicate properties, the properties which are defined later in the order would override the earlier ones -->
|
||||
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath)</RepositoryBuildArguments>
|
||||
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath)</RepositoryBuildArguments>
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
<!-- Restore and pack-->
|
||||
<MSBuild Projects="$(MetapackageWorkDirectory)Microsoft.AspNetCore.All.csproj"
|
||||
Targets="Restore;Pack"
|
||||
Properties="Configuration=$(Configuration);DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath)" />
|
||||
Properties="Configuration=$(Configuration);DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath);AspNetUniverseBuildOffline=true" />
|
||||
|
||||
<!-- Copy to output directory -->
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Internal.AspNetCore.Sdk" Version="$(InternalAspNetCoreSdkVersion)" PrivateAssets="All" />
|
||||
<PackageReference Include="Internal.AspNetCore.Sdk" Version="$(InternalAspNetCoreSdkPackageVersion)" PrivateAssets="All" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -22,6 +22,7 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ExternalDependency Include="System.Memory" Version="4.4.0-preview3-25519-03" Source="$(DotNetCoreFeed)" Mirror="true" />
|
||||
<ExternalDependency Include="Microsoft.DotNet.PlatformAbstractions" Version="$(CoreSetupPackageVersion)" Source="$(DotNetCoreFeed)" Mirror="true" />
|
||||
<ExternalDependency Include="Microsoft.Extensions.DependencyModel" Version="$(CoreSetupPackageVersion)" Source="$(DotNetCoreFeed)" Mirror="true" />
|
||||
<ExternalDependency Include="Microsoft.NETCore.App" Version="$(CoreSetupPackageVersion)" Source="$(DotNetCoreFeed)" Mirror="true" >
|
||||
|
|
@ -95,10 +96,12 @@
|
|||
<!-- ASP.NET Core Tools feed -->
|
||||
<PropertyGroup>
|
||||
<AspNetCoreToolsFeed>https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json</AspNetCoreToolsFeed>
|
||||
<InternalAspNetCoreSdkPackageVersion>2.0.2-beta-15522</InternalAspNetCoreSdkPackageVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ExternalDependency Include="Internal.AspNetCore.Sdk" Version="2.0.1-rtm-15400" Source="$(AspNetCoreToolsFeed)" Private="true"/>
|
||||
<ExternalDependency Include="Internal.AspNetCore.Sdk" Version="$(InternalAspNetCoreSdkPackageVersion)" Source="$(AspNetCoreToolsFeed)" Private="true" />
|
||||
<ExternalDependency Include="Microsoft.AspNetCore.BuildTools.ApiCheck" Version="$(InternalAspNetCoreSdkPackageVersion)" Source="$(AspNetCoreToolsFeed)" Private="true" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- ASP.NET Core (non-Universe builds) -->
|
||||
|
|
@ -171,7 +174,23 @@
|
|||
<ExternalDependency Include="Microsoft.Web.Xdt" Version="1.4.0" Source="$(DefaultNuGetFeed)"/>
|
||||
<ExternalDependency Include="Microsoft.Win32.Registry" Version="4.4.0" Source="$(DefaultNuGetFeed)" />
|
||||
<ExternalDependency Include="Moq" Version="4.7.49" Source="$(DefaultNuGetFeed)" Private="true"/>
|
||||
<ExternalDependency Include="NETStandard.Library" Version="2.0.0" Source="$(DefaultNuGetFeed)" />
|
||||
<ExternalDependency Include="NETStandard.Library" Version="2.0.0" Source="$(DefaultNuGetFeed)">
|
||||
<NoWarn>KRB2004</NoWarn>
|
||||
<VariableName>NETStandardImplicitPackageVersion</VariableName>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
</ExternalDependency>
|
||||
<ExternalDependency Include="NETStandard.Library" Version="2.0.0" Source="$(DefaultNuGetFeed)">
|
||||
<!-- We have a dependency on NS.Library from the .NET Framework tfm in aspnet/EventNotification. -->
|
||||
<NoWarn>KRB2004</NoWarn>
|
||||
<VariableName>NETStandardLibraryPackageVersion</VariableName>
|
||||
<TargetFramework>net461</TargetFramework>
|
||||
</ExternalDependency>
|
||||
<ExternalDependency Include="NETStandard.Library" Version="2.0.0" Source="$(DefaultNuGetFeed)">
|
||||
<!-- We have a dependency on NS.Library from a few .NET Framework packages in aspnet/Razor. -->
|
||||
<NoWarn>KRB2004</NoWarn>
|
||||
<VariableName>NETStandardLibraryPackageVersion</VariableName>
|
||||
<TargetFramework>net46</TargetFramework>
|
||||
</ExternalDependency>
|
||||
<ExternalDependency Include="Newtonsoft.Json.Bson" Version="1.0.1" Source="$(DefaultNuGetFeed)" />
|
||||
<ExternalDependency Include="Newtonsoft.Json" Version="9.0.1" Source="$(DefaultNuGetFeed)" Private="true">
|
||||
<!-- This version is used by tooling packages to match what is in VS and MSBuild. -->
|
||||
|
|
@ -181,6 +200,7 @@
|
|||
<ExternalDependency Include="Newtonsoft.Json" Version="10.0.1" Source="$(DefaultNuGetFeed)">
|
||||
<!-- This version is used by runtime packages. -->
|
||||
<NoWarn>KRB2004</NoWarn>
|
||||
<VariableName>NewtonsoftJsonRuntimePackageVersion</VariableName>
|
||||
</ExternalDependency>
|
||||
<ExternalDependency Include="NuGet.Frameworks" Version="4.0.0" Source="$(DefaultNuGetFeed)"/>
|
||||
<ExternalDependency Include="Remotion.Linq" Version="2.1.1" Source="$(DefaultNuGetFeed)"/>
|
||||
|
|
@ -213,14 +233,16 @@
|
|||
<ExternalDependency Include="xunit.assert" Version="2.2.0" Source="$(DefaultNuGetFeed)" Private="true">
|
||||
<!-- EF's benchmarks use a different version of xunit.assert -->
|
||||
<NoWarn>KRB2004</NoWarn>
|
||||
<VariableName>EFBenchmarksXunitAssertPackageVersion</VariableName>
|
||||
<VariableName>XunitAssertStablePackageVersion</VariableName>
|
||||
</ExternalDependency>
|
||||
<ExternalDependency Include="xunit.assert" Version="2.3.0-beta2-build3683" Source="$(DefaultNuGetFeed)" Private="true">
|
||||
<!-- EF's benchmarks use a different version of xunit.assert -->
|
||||
<NoWarn>KRB2004</NoWarn>
|
||||
</ExternalDependency>
|
||||
<ExternalDependency Include="xunit.extensibility.core" Version="2.2.0" Source="$(DefaultNuGetFeed)" />
|
||||
<ExternalDependency Include="xunit.runner.visualstudio" Version="2.3.0-beta2-build1317" Source="$(DefaultNuGetFeed)" Private="true"/>
|
||||
<ExternalDependency Include="xunit.runner.visualstudio" Version="2.3.0-beta2-build1317" Source="$(DefaultNuGetFeed)" Private="true">
|
||||
<VariableName>XunitRunnerVisualStudioPackageVersion</VariableName>
|
||||
</ExternalDependency>
|
||||
<ExternalDependency Include="xunit" Version="2.2.0" Source="$(DefaultNuGetFeed)">
|
||||
<!-- It is okay to have multiple versions of test-only dependencies. -->
|
||||
<NoWarn>KRB2004</NoWarn>
|
||||
|
|
@ -231,8 +253,4 @@
|
|||
<NoWarn>KRB2004</NoWarn>
|
||||
</ExternalDependency>
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<InternalAspNetCoreSdkVersion>2.0.1-rtm-15400</InternalAspNetCoreSdkVersion>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -207,26 +207,6 @@
|
|||
</RepoTasks.AnalyzeBuildGraph>
|
||||
</Target>
|
||||
|
||||
<Target Name="UpdateRepoLineups" DependsOnTargets="ResolveRepoInfo">
|
||||
<RepoTasks.GenerateLineup
|
||||
Artifacts="@(ArtifactInfo)"
|
||||
Repository="%(Repository.Identity)"
|
||||
OutputPath="$(_CloneRepositoryRoot)%(Repository.Identity)\build\dependencies.targets"
|
||||
UseFloatingVersions="true"
|
||||
BuildNumber="$(BuildNumber)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="GenerateLineup" DependsOnTargets="ResolveRepoInfo">
|
||||
<Message Text="Packages that will be produced:" Importance="High" />
|
||||
<Message Text=" - %(ArtifactInfo.PackageId)/%(Version)" Importance="High" Condition="'%(ArtifactType)' == 'NuGetPackage'" />
|
||||
|
||||
<RepoTasks.GenerateLineup
|
||||
Artifacts="@(ArtifactInfo)"
|
||||
OutputPath="$(ArtifactsDir)dependencies.targets"
|
||||
UseFloatingVersions="false"
|
||||
BuildNumber="$(BuildNumber)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="SplitPackages">
|
||||
<ItemGroup>
|
||||
<PackageArtifactFile Include="$(BuildDir)*.nupkg" Exclude="$(BuildDir)*.symbols.nupkg" />
|
||||
|
|
|
|||
|
|
@ -130,6 +130,15 @@ namespace RepoTasks
|
|||
var matchesExternalDependency = false;
|
||||
if (shippedPackageMap.TryGetValue(dependency.Key, out var shippedPackage))
|
||||
{
|
||||
if (string.IsNullOrEmpty(dependency.Value.Version))
|
||||
{
|
||||
Log.LogKoreBuildError(
|
||||
project.FullPath,
|
||||
KoreBuildErrors.EmptyPackageReferenceVersion,
|
||||
message: $"Package reference to {dependency.Key} has an empty version");
|
||||
continue;
|
||||
}
|
||||
|
||||
matchesExternalDependency = shippedPackage.PackageInfo.Version.Equals(NuGetVersion.Parse(dependency.Value.Version));
|
||||
}
|
||||
else if (dependencyMap.TryGetValue(dependency.Key, out var externalVersions))
|
||||
|
|
@ -152,7 +161,7 @@ namespace RepoTasks
|
|||
{
|
||||
continue;
|
||||
}
|
||||
else if (package.PackageInfo.Version.Equals(refVersion))
|
||||
else if (package.PackageInfo.Version.Equals(refVersion.MinVersion))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,87 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.IO;
|
||||
using System.Xml;
|
||||
using System.Xml.Linq;
|
||||
using Microsoft.Build.Framework;
|
||||
using Microsoft.Build.Utilities;
|
||||
using RepoTasks.ProjectModel;
|
||||
using RepoTasks.Utilities;
|
||||
|
||||
namespace RepoTasks
|
||||
{
|
||||
public class GenerateLineup : Task
|
||||
{
|
||||
[Required]
|
||||
public ITaskItem[] Artifacts { get; set; }
|
||||
|
||||
[Required]
|
||||
public string OutputPath { get; set; }
|
||||
|
||||
// Can be set to filter the lists of packages when produce a list for a specific repository
|
||||
public string Repository { get; set; }
|
||||
|
||||
public bool UseFloatingVersions { get; set; }
|
||||
|
||||
public string BuildNumber { get; set; }
|
||||
|
||||
public override bool Execute()
|
||||
{
|
||||
OutputPath = OutputPath.Replace('\\', '/');
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(OutputPath));
|
||||
|
||||
if (UseFloatingVersions && string.IsNullOrEmpty(BuildNumber))
|
||||
{
|
||||
Log.LogWarning("Cannot compute floating versions when BuildNumber is not specified");
|
||||
}
|
||||
|
||||
var items = new XElement("ItemGroup");
|
||||
var root = new XElement("Project", items);
|
||||
var doc = new XDocument(root);
|
||||
|
||||
var packages = new List<PackageInfo>();
|
||||
|
||||
foreach (var pkg in Artifacts.Select(ArtifactInfo.Parse)
|
||||
.OfType<ArtifactInfo.Package>()
|
||||
.Where(p => !p.IsSymbolsArtifact
|
||||
&& (string.IsNullOrEmpty(Repository)
|
||||
|| !Repository.Equals(p.RepoName, StringComparison.OrdinalIgnoreCase))))
|
||||
{
|
||||
packages.Add(pkg.PackageInfo);
|
||||
}
|
||||
|
||||
foreach (var pkg in packages.OrderBy(i => i.Id))
|
||||
{
|
||||
var version = pkg.Version.ToString();
|
||||
if (UseFloatingVersions && version.EndsWith(BuildNumber))
|
||||
{
|
||||
version = version.Substring(0, version.Length - BuildNumber.Length) + "*";
|
||||
}
|
||||
|
||||
var refType = "DotNetCliTool".Equals(pkg.PackageType, StringComparison.OrdinalIgnoreCase)
|
||||
? "DotNetCliToolReference"
|
||||
: "PackageReference";
|
||||
|
||||
items.Add(new XElement(refType,
|
||||
new XAttribute("Update", pkg.Id),
|
||||
new XAttribute("Version", version)));
|
||||
}
|
||||
|
||||
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 true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -57,28 +57,7 @@ namespace RepoTasks
|
|||
}
|
||||
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();
|
||||
packageVarName = GetVariableName(pkg.ItemSpec);
|
||||
}
|
||||
|
||||
var packageTfm = pkg.GetMetadata("TargetFramework");
|
||||
|
|
@ -109,10 +88,36 @@ namespace RepoTasks
|
|||
};
|
||||
using (var writer = XmlWriter.Create(OutputPath, settings))
|
||||
{
|
||||
Log.LogMessage(MessageImportance.High, $"Generate {OutputPath}");
|
||||
Log.LogMessage(MessageImportance.Normal, $"Generate {OutputPath}");
|
||||
doc.Save(writer);
|
||||
}
|
||||
return !Log.HasLoggedErrors;
|
||||
}
|
||||
|
||||
private string GetVariableName(string packageId)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
var first = true;
|
||||
foreach (var ch in packageId)
|
||||
{
|
||||
if (ch == '.')
|
||||
{
|
||||
first = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (first)
|
||||
{
|
||||
first = false;
|
||||
sb.Append(char.ToUpperInvariant(ch));
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append(ch);
|
||||
}
|
||||
}
|
||||
sb.Append("PackageVersion");
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ namespace RepoTasks
|
|||
};
|
||||
using (var writer = XmlWriter.Create(OutputPath, settings))
|
||||
{
|
||||
Log.LogMessage(MessageImportance.High, $"Generate {OutputPath}");
|
||||
Log.LogMessage(MessageImportance.Normal, $"Generate {OutputPath}");
|
||||
doc.Save(writer);
|
||||
}
|
||||
return !Log.HasLoggedErrors;
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@
|
|||
<UsingTask TaskName="RepoTasks.AnalyzeBuildGraph" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.CopyPackagesToSplitFolders" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.DownloadNuGetPackages" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.GenerateLineup" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.GeneratePackageVersionPropsFile" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.GenerateRestoreSourcesPropsFile" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
<UsingTask TaskName="RepoTasks.VerifyCoherentVersions" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ namespace RepoTasks.Utilities
|
|||
public const int DotNetCliReferenceReferenceHasVersion = 4003;
|
||||
public const int PackageVersionNotFoundInLineup = 4004;
|
||||
public const int UndefinedExternalDependency = 4005;
|
||||
public const int EmptyPackageReferenceVersion = 4006;
|
||||
|
||||
// Other unknown errors
|
||||
public const int PolicyFailedToApply = 5000;
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
version:2.0.2-beta-15516
|
||||
commithash:b7022c60cb24c59a29ca4bd9ad8f6dd29dc41509
|
||||
version:2.0.2-beta-15522
|
||||
commithash:f26cb086ebd8b5a187381bb9a431794f11d69025
|
||||
|
|
|
|||
|
|
@ -5,11 +5,12 @@
|
|||
|
||||
<PropertyGroup>
|
||||
<RestoreSources>$(DotNetRestoreSources)</RestoreSources>
|
||||
<RestoreSources Condition="'$(DotNetBuildOffline)' != 'true' AND '$(AspNetUniverseBuildOffline)' != 'true' ">
|
||||
$(RestoreSources);
|
||||
https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
|
||||
</RestoreSources>
|
||||
<RestoreSources Condition="'$(DotNetBuildOffline)' != 'true'">
|
||||
$(RestoreSources);
|
||||
https://dotnet.myget.org/F/aspnet-2-0-2-october2017-patch/api/v3/index.json;
|
||||
https://dotnet.myget.org/F/aspnetcore-master/api/v3/index.json;
|
||||
https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
|
||||
https://api.nuget.org/v3/index.json;
|
||||
</RestoreSources>
|
||||
|
||||
|
|
@ -18,6 +19,7 @@
|
|||
<PackageTags>aspnetcore</PackageTags>
|
||||
<Description>Microsoft.AspNetCore.All</Description>
|
||||
<EnableApiCheck>false</EnableApiCheck>
|
||||
<RuntimeFrameworkVersion>$(CoreSetupPackageVersion)</RuntimeFrameworkVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
Loading…
Reference in New Issue