Skip to content

Commit ddf73e6

Browse files
committed
Add SdkFlatLayout option for SDK packages that extend base SDKs
1 parent 3c4f358 commit ddf73e6

3 files changed

Lines changed: 11 additions & 3 deletions

File tree

samples/MinimalSdkPackage/DefinitionFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public static PackageDefinition Create()
2121
.Task("WriteLinesToFile", task => task
2222
.Param("File", "$(BaseIntermediateOutputPath)MinimalSdkPackage.txt")
2323
.Param("Lines", "Hello from MinimalSdkPackage"))))
24-
.Pack(o => { o.EmitSdk = true; o.BuildTransitive = true; })
24+
.Pack(o => { o.EmitSdk = true; o.SdkFlatLayout = true; o.BuildTransitive = true; })
2525
.Build();
2626
}
2727
}

src/JD.MSBuild.Fluent/Packaging/MsBuildPackageEmitter.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,12 @@ public void Emit(PackageDefinition def, string outputDirectory)
4141
if (def.Packaging.BuildTransitive)
4242
EmitBuildAssets(Path.Combine(outputDirectory, "buildTransitive"), basename, def.GetBuildTransitiveProps(), def.GetBuildTransitiveTargets());
4343

44-
// Sdk/<id>/Sdk.props & Sdk.targets
44+
// Sdk/<id>/Sdk.props & Sdk.targets (or Sdk/Sdk.props if SdkFlatLayout=true)
4545
if (def.Packaging.EmitSdk)
4646
{
47-
var sdkDir = Path.Combine(outputDirectory, "Sdk", def.Id);
47+
var sdkDir = def.Packaging.SdkFlatLayout
48+
? Path.Combine(outputDirectory, "Sdk")
49+
: Path.Combine(outputDirectory, "Sdk", def.Id);
4850
Directory.CreateDirectory(sdkDir);
4951
File.WriteAllText(Path.Combine(sdkDir, "Sdk.props"), _renderer.RenderToString(def.GetSdkProps()));
5052
File.WriteAllText(Path.Combine(sdkDir, "Sdk.targets"), _renderer.RenderToString(def.GetSdkTargets()));

src/JD.MSBuild.Fluent/Packaging/PackagePackagingOptions.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ public sealed class PackagePackagingOptions
1515
/// </summary>
1616
public bool EmitSdk { get; set; }
1717

18+
/// <summary>
19+
/// If true, emit SDK files as Sdk/Sdk.props instead of Sdk/&lt;PackageId&gt;/Sdk.props.
20+
/// This is required for packages that extend base SDKs (e.g., extending Microsoft.NET.Sdk).
21+
/// </summary>
22+
public bool SdkFlatLayout { get; set; }
23+
1824
/// <summary>
1925
/// Base file name used for build/*.props and build/*.targets.
2026
/// Defaults to the package ID.

0 commit comments

Comments
 (0)