Skip to content
This repository was archived by the owner on Apr 20, 2023. It is now read-only.

Commit 9cd4e5a

Browse files
committed
Add Microsoft.NET.Build.Extensions files to package for VS insertion
1 parent 6b44f89 commit 9cd4e5a

File tree

5 files changed

+112
-4
lines changed

5 files changed

+112
-4
lines changed

build/MSBuildExtensions.targets

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
DependsOnTargets="GenerateBundledVersionsProps;RestoreMSBuildExtensionsPackages">
44

55
<ItemGroup>
6+
7+
<!-- The MSBuildExtensionsContent item is for the files that will be laid out in the CLI install -->
68
<MSBuildExtensionsContent Include="$(GeneratedMSBuildExtensionsDirectory)/**/*" />
79

810
<!-- We want to include the tasks and targets from the Microsoft.NET.Build.Extensions package, but we don't want to include the DLLs
@@ -22,7 +24,25 @@
2224
<MSBuildExtensionsContent Include="$(NETStandardLibraryNETFrameworkNuPkgPath)\build\**\*.*"
2325
Exclude="$(NETStandardLibraryNETFrameworkNuPkgPath)\build\**\*.props;$(NETStandardLibraryNETFrameworkNuPkgPath)\build\**\*.targets"
2426
DeploymentSubpath="Microsoft.NET.Build.Extensions/" />
27+
28+
29+
<!-- The VSMSBuildExtensionsContent item is for the files that will be included in the VS.Redist.Common.Net.Core.SDK.MSBuildExtensions
30+
package and inserted into Visual Studio -->
31+
<VSMSBuildExtensionsContent Include="$(MSBuildExtensionsNuPkgPath)\msbuildExtensions\**\*.*"
32+
Exclude="$(MSBuildExtensionsNuPkgPath)\msbuildExtensions\Microsoft.NET.Build.Extensions\net*\**"
33+
DeploymentSubpath="msbuildExtensions/"/>
34+
<VSMSBuildExtensionsContent Include="$(MSBuildExtensionsNuPkgPath)\msbuildExtensions-ver\**\*.*"
35+
DeploymentSubpath="msbuildExtensions-ver/"/>
36+
<VSMSBuildExtensionsContent Include="$(NETStandardLibraryNETFrameworkNuPkgPath)\build\**\*.*"
37+
Exclude="$(NETStandardLibraryNETFrameworkNuPkgPath)\build\**\*.props;$(NETStandardLibraryNETFrameworkNuPkgPath)\build\**\*.targets"
38+
DeploymentSubpath="msbuildExtensions/Microsoft.NET.Build.Extensions/" />
39+
40+
<VSMSBuildExtensionsContent Update="@(VSMSBuildExtensionsContent)">
41+
<DestinationPath >$(MSBuildExtensionsLayoutDirectory)/%(VSMSBuildExtensionsContent.DeploymentSubpath)%(RecursiveDir)%(Filename)%(Extension)</DestinationPath>
42+
</VSMSBuildExtensionsContent>
2543
</ItemGroup>
44+
45+
<Copy SourceFiles="@(VSMSBuildExtensionsContent)" DestinationFiles="%(VSMSBuildExtensionsContent.DestinationPath)" />
2646
</Target>
2747

2848
<Target Name="PrepareMSBuildExtensionsProps">

build/Microsoft.DotNet.Cli.tasks

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
<UsingTask TaskName="DownloadFile" AssemblyFile="$(CLIBuildDll)" />
2020
<UsingTask TaskName="GenerateChecksums" AssemblyFile="$(CLIBuildDll)" />
2121
<UsingTask TaskName="GenerateGuidFromName" AssemblyFile="$(CLIBuildDll)" />
22+
<UsingTask TaskName="GenerateMSBuildExtensionsSWR" AssemblyFile="$(CLIBuildDll)" />
2223
<UsingTask TaskName="GenerateMsiVersion" AssemblyFile="$(CLIBuildDll)" />
2324
<UsingTask TaskName="GenerateNuGetPackagesArchiveVersion" AssemblyFile="$(CLIBuildDll)" />
2425
<UsingTask TaskName="GetCurrentRuntimeInformation" AssemblyFile="$(CLIBuildDll)" />

build/OutputDirectories.props

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<TestOutputDir>$(RepoRoot)/artifacts/testpackages/</TestOutputDir>
1818
<DotnetInOutputDirectory>$(OutputDirectory)/dotnet$(ExeExtension)</DotnetInOutputDirectory>
1919
<GeneratedMSBuildExtensionsDirectory>$(IntermediateDirectory)/GeneratedMSBuildExtensions</GeneratedMSBuildExtensionsDirectory>
20-
<SdkResolverOutputDirectory>$(IntermediateDirectory)/MSBuildSdkResolver</SdkResolverOutputDirectory>
20+
<MSBuildExtensionsLayoutDirectory>$(IntermediateDirectory)/MSBuildExtensionsLayout</MSBuildExtensionsLayoutDirectory>
21+
<SdkResolverOutputDirectory>$(MSBuildExtensionsLayoutDirectory)/MSBuildSdkResolver</SdkResolverOutputDirectory>
2122
</PropertyGroup>
2223
</Project>

build/package/Installer.MSI.targets

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
<SdkMSBuildExtensionsNuspecFile>$(RepoRoot)/packaging/windows/clisdk/VS.Redist.Common.Net.Core.SDK.MSBuildExtensions.nuspec</SdkMSBuildExtensionsNuspecFile>
2424
<SdkMSBuildExtensionsNupkgFile>$(InstallerOutputDirectory)/VS.Redist.Common.Net.Core.SDK.MSBuildExtensions.$(FullNugetVersion).nupkg</SdkMSBuildExtensionsNupkgFile>
25+
<SdkMSBuildExtensionsSwrFile>$(InstallerOutputDirectory)/VS.Redist.Common.Net.Core.SDK.MSBuildExtensions.swr</SdkMSBuildExtensionsSwrFile>
2526
</PropertyGroup>
2627

2728
<!-- Test Sdk MSI Properties -->
@@ -146,16 +147,20 @@
146147
<Target Name="GenerateSdkMSBuildExtensionsNupkg"
147148
DependsOnTargets="Init;Layout;MsiTargetsSetupInputOutputs;GenerateSdkBundle"
148149
Condition=" '$(OS)' == 'Windows_NT'"
149-
Inputs="$(SdkResolverOutputDirectory)/**/*;
150+
Inputs="$(MSBuildExtensionsLayoutDirectory)/**/*;
150151
$(SdkInstallerNuspecFile);
151152
$(SdkGenerateNupkgPowershellScript)"
152-
Outputs="$(SdkInstallerNupkgFile)">
153+
Outputs="$(SdkMSBuildExtensionsNupkgFile);$(SdkMSBuildExtensionsSwrFile)">
153154

154155
<Exec Command="powershell -NoProfile -NoLogo $(SdkGenerateNupkgPowershellScript)
155-
'$(SdkResolverOutputDirectory)'
156+
'$(MSBuildExtensionsLayoutDirectory)'
156157
'$(FullNugetVersion)'
157158
'$(SdkMSBuildExtensionsNuspecFile)'
158159
'$(SdkMSBuildExtensionsNupkgFile)'" />
160+
161+
<GenerateMSBuildExtensionsSWR MSBuildExtensionsLayoutDirectory="$(MSBuildExtensionsLayoutDirectory)"
162+
OutputFile="$(SdkMSBuildExtensionsSwrFile)"/>
163+
159164
</Target>
160165

161166
<Target Name="TestSdkMsi"
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
using Microsoft.Build.Framework;
2+
using Microsoft.Build.Utilities;
3+
using System;
4+
using System.Collections.Generic;
5+
using System.IO;
6+
using System.Linq;
7+
using System.Text;
8+
9+
namespace Microsoft.DotNet.Cli.Build
10+
{
11+
public class GenerateMSBuildExtensionsSWR : Task
12+
{
13+
[Required]
14+
public string MSBuildExtensionsLayoutDirectory { get; set; }
15+
16+
[Required]
17+
public string OutputFile { get; set; }
18+
19+
public override bool Execute()
20+
{
21+
StringBuilder sb = new StringBuilder(SWR_HEADER);
22+
23+
AddFolder(sb,
24+
@"MSBuildSdkResolver",
25+
@"MSBuild\15.0\Bin\SdkResolvers\Microsoft.DotNet.MSBuildSdkResolver");
26+
27+
AddFolder(sb,
28+
@"msbuildExtensions",
29+
@"MSBuild");
30+
31+
AddFolder(sb,
32+
@"msbuildExtensions-ver",
33+
@"MSBuild\15.0");
34+
35+
File.WriteAllText(OutputFile, sb.ToString());
36+
37+
return true;
38+
}
39+
40+
private void AddFolder(StringBuilder sb, string relativeSourcePath, string swrInstallDir)
41+
{
42+
string sourceFolder = Path.Combine(MSBuildExtensionsLayoutDirectory, relativeSourcePath);
43+
var files = Directory.GetFiles(sourceFolder)
44+
.Where(f => !Path.GetExtension(f).Equals(".pdb", StringComparison.OrdinalIgnoreCase))
45+
.ToList();
46+
if (files.Any())
47+
{
48+
sb.Append(@"folder ""InstallDir:\");
49+
sb.Append(swrInstallDir);
50+
sb.AppendLine(@"\""");
51+
52+
foreach (var file in files)
53+
{
54+
sb.Append(@" file source=""!(bindpath.sources)\Redist\Common\NetCoreSDK\MSBuildExtensions\");
55+
sb.Append(Path.Combine(relativeSourcePath, Path.GetFileName(file)));
56+
sb.AppendLine("\"");
57+
}
58+
59+
sb.AppendLine();
60+
}
61+
62+
foreach (var subfolder in Directory.GetDirectories(sourceFolder))
63+
{
64+
string subfolderName = Path.GetFileName(subfolder);
65+
string newRelativeSourcePath = Path.Combine(relativeSourcePath, subfolderName);
66+
string newSwrInstallDir = Path.Combine(swrInstallDir, subfolderName);
67+
68+
AddFolder(sb, newRelativeSourcePath, newSwrInstallDir);
69+
}
70+
}
71+
72+
readonly string SWR_HEADER = @"use vs
73+
74+
package name=Microsoft.Net.Core.SDK.MSBuildExtensions
75+
version=$(Version)
76+
vs.package.branch=$(VsSingletonPackageBranch)
77+
vs.package.internalRevision=$(PackageInternalRevision)
78+
79+
";
80+
}
81+
}

0 commit comments

Comments
 (0)