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
Expand Up @@ -5,6 +5,7 @@
using Microsoft.Build.Evaluation;
using Shouldly;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Xunit;

Expand Down Expand Up @@ -219,6 +220,75 @@ public void PackageReference()
StringCompareShould.IgnoreLineEndings);
}

[Fact]
public void PackageVersion()
{
string feedRootPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
Directory.CreateDirectory(feedRootPath);

PackageFeed.Templates.SinglePackage(feedRootPath, out Package package);

ProjectCreator.Create(projectFileOptions: NewProjectFileOptions.None)
.ItemPackageVersion(package)
.Xml.ShouldBe(
@"<Project>
<ItemGroup>
<PackageVersion Include=""SomePackage"">
<Version>1.0.0</Version>
</PackageVersion>
</ItemGroup>
</Project>",
StringCompareShould.IgnoreLineEndings);
}

[Fact]
public void PackageVersionWithConditionAndLabel()
{
string feedRootPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
Directory.CreateDirectory(feedRootPath);

PackageFeed.Templates.SinglePackage(feedRootPath, out Package package);

ProjectCreator.Create(projectFileOptions: NewProjectFileOptions.None)
.ItemPackageVersion(package, condition: "623C8EF659D946FBBF61CBF7F767C19A", label: "label")
.Xml.ShouldBe(
@"<Project>
<ItemGroup>
<PackageVersion Include=""SomePackage"" Condition=""623C8EF659D946FBBF61CBF7F767C19A"" Label=""label"">
<Version>1.0.0</Version>
</PackageVersion>
</ItemGroup>
</Project>",
StringCompareShould.IgnoreLineEndings);
}

[Fact]
public void PackageVersionWithMetadata()
{
string feedRootPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
Directory.CreateDirectory(feedRootPath);

PackageFeed.Templates.SinglePackage(feedRootPath, out Package package);

ProjectCreator.Create(projectFileOptions: NewProjectFileOptions.None)
.ItemPackageVersion(
package,
metadata: new Dictionary<string, string?>
{
{ "Custom", "1A6A6B7A09B64A4F9D71A56AA19B9A0A" },
})
.Xml.ShouldBe(
@"<Project>
<ItemGroup>
<PackageVersion Include=""SomePackage"">
<Custom>1A6A6B7A09B64A4F9D71A56AA19B9A0A</Custom>
<Version>1.0.0</Version>
</PackageVersion>
</ItemGroup>
</Project>",
StringCompareShould.IgnoreLineEndings);
}

[Fact]
public void ProjectReferenceAnotherProject()
{
Expand Down
13 changes: 13 additions & 0 deletions src/Microsoft.Build.Utilities.ProjectCreation/PackageFeed.Items.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,18 @@ public ProjectCreator ItemPackageReference(Package package, string? includeAsset
{
return ItemPackageReference(package.Id, package.Version, includeAssets, excludeAssets, privateAssets, metadata, condition, label);
}

/// <summary>
/// Adds a &lt;PackageVersion /&gt; item to the current item group.
/// </summary>
/// <param name="package">The <see cref="Package" /> of the package to version.</param>
/// <param name="metadata">An optional <see cref="IDictionary{String,String}" /> containing metadata for the item.</param>
/// <param name="condition">An optional condition to add to the item.</param>
/// <param name="label">An optional label to add to the item.</param>
/// <returns>The current <see cref="ProjectCreator" />.</returns>
public ProjectCreator ItemPackageVersion(Package package, IDictionary<string, string?>? metadata = null, string? condition = null, string? label = null)
{
return ItemPackageVersion(package.Id, package.Version, metadata, condition, label);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,28 @@ public ProjectCreator ItemPackageReference(string include, string? version = nul
label: label);
}

/// <summary>
/// Adds a &lt;PackageVersion /&gt; item to the current item group.
/// </summary>
/// <param name="include">The name of the package to version.</param>
/// <param name="version">The version of the package to reference.</param>
/// <param name="metadata">An optional <see cref="IDictionary{String,String}" /> containing metadata for the item.</param>
/// <param name="condition">An optional condition to add to the item.</param>
/// <param name="label">An optional label to add to the item.</param>
/// <returns>The current <see cref="ProjectCreator" />.</returns>
public ProjectCreator ItemPackageVersion(string include, string version, IDictionary<string, string?>? metadata = null, string? condition = null, string? label = null)
{
return ItemInclude(
itemType: "PackageVersion",
include: include,
metadata: metadata.Merge(new Dictionary<string, string?>
{
{ "Version", version },
}),
condition: condition,
label: label);
}

/// <summary>
/// Adds a &lt;ProjectReference /&gt; item to the current item group.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward.LatestFeature
Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward.LatestMajor = 3 -> Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward
Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward.LatestMinor = 2 -> Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward
Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward.LatestPatch = 0 -> Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward
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!
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!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward.LatestFeature
Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward.LatestMajor = 3 -> Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward
Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward.LatestMinor = 2 -> Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward
Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward.LatestPatch = 0 -> Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward
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!
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!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward.LatestFeature
Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward.LatestMajor = 3 -> Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward
Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward.LatestMinor = 2 -> Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward
Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward.LatestPatch = 0 -> Microsoft.Build.Utilities.ProjectCreation.GlobalJsonSdkRollForward
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!
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!
Expand Down