Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// Copyright (c) Jeff Kluge. All rights reserved.
//
// Licensed under the MIT license.

using Shouldly;
using System.Collections.Generic;
using System.IO;
using Xunit;

namespace Microsoft.Build.Utilities.ProjectCreation.UnitTests
{
public class DirectoryPackagesPropsTests : TestBase
{
[Fact]
public void Default()
{
ProjectCreator creator = ProjectCreator.Templates.DirectoryPackagesProps();

creator.Xml.ShouldBe(
@"<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
</Project>",
StringCompareShould.IgnoreLineEndings);

creator.FullPath.ShouldBe(Path.Combine(Directory.GetCurrentDirectory(), "Directory.Packages.props"));
}

[Fact]
public void PackageVersions()
{
ProjectCreator creator = ProjectCreator.Templates.DirectoryPackagesProps(
new Dictionary<string, string>
{
["Newtonsoft.Json"] = "13.0.1",
["Serilog"] = "3.1.0",
},
directory: TestRootPath);

creator.Xml.ShouldBe(
@"<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include=""Newtonsoft.Json"">
<Version>13.0.1</Version>
</PackageVersion>
<PackageVersion Include=""Serilog"">
<Version>3.1.0</Version>
</PackageVersion>
</ItemGroup>
</Project>",
StringCompareShould.IgnoreLineEndings);

creator.FullPath.ShouldBe(Path.Combine(TestRootPath, "Directory.Packages.props"));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -502,6 +502,12 @@ private bool Build(bool restore, string[]? targets, IDictionary<string, string>?
{
return false;
}

bool buildResult = BuildHost.TryBuild(FullPath, ProjectCollection, buildOutput, out targetOutputs, targets: targets, globalProperties: globalProperties);

ResetProjectInstance();

return buildResult;
}

ProjectInstance projectInstance;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
// Copyright (c) Jeff Kluge. All rights reserved.
//
// Licensed under the MIT license.

using Microsoft.Build.Evaluation;
using System;
using System.Collections.Generic;
using System.IO;

namespace Microsoft.Build.Utilities.ProjectCreation
{
public partial class ProjectCreatorTemplates
{
/// <summary>
/// Creates a Directory.Packages.props file with central package management enabled.
/// </summary>
/// <param name="packageVersions">An optional collection of package IDs and versions to write to the file.</param>
/// <param name="directory">An optional relative or full directory for the file. The default is the current directory.</param>
/// <param name="projectCreator">An optional <see cref="Action{ProjectCreator}" /> delegate to call in the body of the file.</param>
/// <param name="projectCollection">An optional <see cref="ProjectCollection" /> to use when loading the file.</param>
/// <param name="projectFileOptions">An optional <see cref="NewProjectFileOptions" /> specifying options when creating a new file.</param>
/// <param name="globalProperties">An optional <see cref="IDictionary{String,String}" /> containing global properties for the file.</param>
/// <returns>A <see cref="ProjectCreator" /> object that is used to construct an MSBuild file.</returns>
public ProjectCreator DirectoryPackagesProps(
IDictionary<string, string>? packageVersions = null,
string? directory = null,
Action<ProjectCreator>? projectCreator = null,
ProjectCollection? projectCollection = null,
NewProjectFileOptions? projectFileOptions = NewProjectFileOptions.None,
IDictionary<string, string>? globalProperties = null)
{
string directoryPath = directory ?? Directory.GetCurrentDirectory();

ProjectCreator project = ProjectCreator.Create(
Path.Combine(directoryPath, "Directory.Packages.props"),
projectCollection: projectCollection,
projectFileOptions: projectFileOptions,
globalProperties: globalProperties)
.Property("ManagePackageVersionsCentrally", "true");

if (packageVersions != null)
{
foreach (KeyValuePair<string, string> packageVersion in packageVersions)
{
project.ItemPackageVersion(packageVersion.Key, packageVersion.Value);
}
}

return project.CustomAction(projectCreator);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward.LatestPatch =
Microsoft.Build.Utilities.ProjectCreation.ProjectCreator.ItemPackageVersion(Microsoft.Build.Utilities.ProjectCreation.Package! package, System.Collections.Generic.IDictionary<string!, string?>? metadata = null, string? condition = null, string? label = null) -> Microsoft.Build.Utilities.ProjectCreation.ProjectCreator!
Microsoft.Build.Utilities.ProjectCreation.ProjectCreator.ItemPackageVersion(string! include, string! version, System.Collections.Generic.IDictionary<string!, string?>? metadata = null, string? condition = null, string? label = null) -> Microsoft.Build.Utilities.ProjectCreation.ProjectCreator!
Microsoft.Build.Utilities.ProjectCreation.ProjectCreator.TryBuild(System.Collections.Generic.IDictionary<string!, string!>? globalProperties, out bool result) -> Microsoft.Build.Utilities.ProjectCreation.ProjectCreator!
Microsoft.Build.Utilities.ProjectCreation.ProjectCreatorTemplates.DirectoryPackagesProps(System.Collections.Generic.IDictionary<string!, string!>? packageVersions = null, string? directory = null, System.Action<Microsoft.Build.Utilities.ProjectCreation.ProjectCreator!>? projectCreator = null, Microsoft.Build.Evaluation.ProjectCollection? projectCollection = null, Microsoft.Build.Evaluation.NewProjectFileOptions? projectFileOptions = Microsoft.Build.Evaluation.NewProjectFileOptions.None, System.Collections.Generic.IDictionary<string!, string!>? globalProperties = null) -> Microsoft.Build.Utilities.ProjectCreation.ProjectCreator!
static Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator.Create(string? directory, string! sdkVersion, Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward? rollForward = null, bool? allowPrerelease = null) -> Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator!
static Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator.Create(System.IO.DirectoryInfo! directory, string! sdkVersion, Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward? rollForward = null, bool? allowPrerelease = null) -> Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator!
static Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator.implicit operator string!(Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator! creator) -> string!
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward.LatestPatch =
Microsoft.Build.Utilities.ProjectCreation.ProjectCreator.ItemPackageVersion(Microsoft.Build.Utilities.ProjectCreation.Package! package, System.Collections.Generic.IDictionary<string!, string?>? metadata = null, string? condition = null, string? label = null) -> Microsoft.Build.Utilities.ProjectCreation.ProjectCreator!
Microsoft.Build.Utilities.ProjectCreation.ProjectCreator.ItemPackageVersion(string! include, string! version, System.Collections.Generic.IDictionary<string!, string?>? metadata = null, string? condition = null, string? label = null) -> Microsoft.Build.Utilities.ProjectCreation.ProjectCreator!
Microsoft.Build.Utilities.ProjectCreation.ProjectCreator.TryBuild(System.Collections.Generic.IDictionary<string!, string!>? globalProperties, out bool result) -> Microsoft.Build.Utilities.ProjectCreation.ProjectCreator!
Microsoft.Build.Utilities.ProjectCreation.ProjectCreatorTemplates.DirectoryPackagesProps(System.Collections.Generic.IDictionary<string!, string!>? packageVersions = null, string? directory = null, System.Action<Microsoft.Build.Utilities.ProjectCreation.ProjectCreator!>? projectCreator = null, Microsoft.Build.Evaluation.ProjectCollection? projectCollection = null, Microsoft.Build.Evaluation.NewProjectFileOptions? projectFileOptions = Microsoft.Build.Evaluation.NewProjectFileOptions.None, System.Collections.Generic.IDictionary<string!, string!>? globalProperties = null) -> Microsoft.Build.Utilities.ProjectCreation.ProjectCreator!
static Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator.Create(string? directory, string! sdkVersion, Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward? rollForward = null, bool? allowPrerelease = null) -> Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator!
static Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator.Create(System.IO.DirectoryInfo! directory, string! sdkVersion, Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward? rollForward = null, bool? allowPrerelease = null) -> Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator!
static Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator.implicit operator string!(Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator! creator) -> string!
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward.LatestPatch =
Microsoft.Build.Utilities.ProjectCreation.ProjectCreator.ItemPackageVersion(Microsoft.Build.Utilities.ProjectCreation.Package! package, System.Collections.Generic.IDictionary<string!, string?>? metadata = null, string? condition = null, string? label = null) -> Microsoft.Build.Utilities.ProjectCreation.ProjectCreator!
Microsoft.Build.Utilities.ProjectCreation.ProjectCreator.ItemPackageVersion(string! include, string! version, System.Collections.Generic.IDictionary<string!, string?>? metadata = null, string? condition = null, string? label = null) -> Microsoft.Build.Utilities.ProjectCreation.ProjectCreator!
Microsoft.Build.Utilities.ProjectCreation.ProjectCreator.TryBuild(System.Collections.Generic.IDictionary<string!, string!>? globalProperties, out bool result) -> Microsoft.Build.Utilities.ProjectCreation.ProjectCreator!
Microsoft.Build.Utilities.ProjectCreation.ProjectCreatorTemplates.DirectoryPackagesProps(System.Collections.Generic.IDictionary<string!, string!>? packageVersions = null, string? directory = null, System.Action<Microsoft.Build.Utilities.ProjectCreation.ProjectCreator!>? projectCreator = null, Microsoft.Build.Evaluation.ProjectCollection? projectCollection = null, Microsoft.Build.Evaluation.NewProjectFileOptions? projectFileOptions = Microsoft.Build.Evaluation.NewProjectFileOptions.None, System.Collections.Generic.IDictionary<string!, string!>? globalProperties = null) -> Microsoft.Build.Utilities.ProjectCreation.ProjectCreator!
static Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator.Create(string? directory, string! sdkVersion, Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward? rollForward = null, bool? allowPrerelease = null) -> Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator!
static Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator.Create(System.IO.DirectoryInfo! directory, string! sdkVersion, Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward? rollForward = null, bool? allowPrerelease = null) -> Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator!
static Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator.implicit operator string!(Microsoft.Build.Utilities.ProjectCreation.GlobalJsonCreator! creator) -> string!
2 changes: 1 addition & 1 deletion version.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"version": "19.0",
"version": "19.1",
"assemblyVersion": "1.0",
"buildNumberOffset": -1,
"nugetPackageVersion": {
Expand Down