81 lines
2.6 KiB
C#
81 lines
2.6 KiB
C#
using Microsoft.Build.Framework;
|
|
using Microsoft.Build.Utilities;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace Microsoft.DotNet.Cli.Build
|
|
{
|
|
public class GenerateMSBuildExtensionsSWR : Task
|
|
{
|
|
[Required]
|
|
public string MSBuildExtensionsLayoutDirectory { get; set; }
|
|
|
|
[Required]
|
|
public string OutputFile { get; set; }
|
|
|
|
public override bool Execute()
|
|
{
|
|
StringBuilder sb = new StringBuilder(SWR_HEADER);
|
|
|
|
AddFolder(sb,
|
|
@"MSBuildSdkResolver",
|
|
@"MSBuild\15.0\Bin\SdkResolvers\Microsoft.DotNet.MSBuildSdkResolver");
|
|
|
|
AddFolder(sb,
|
|
@"msbuildExtensions",
|
|
@"MSBuild");
|
|
|
|
AddFolder(sb,
|
|
@"msbuildExtensions-ver",
|
|
@"MSBuild\15.0");
|
|
|
|
File.WriteAllText(OutputFile, sb.ToString());
|
|
|
|
return true;
|
|
}
|
|
|
|
private void AddFolder(StringBuilder sb, string relativeSourcePath, string swrInstallDir)
|
|
{
|
|
string sourceFolder = Path.Combine(MSBuildExtensionsLayoutDirectory, relativeSourcePath);
|
|
var files = Directory.GetFiles(sourceFolder)
|
|
.Where(f => !Path.GetExtension(f).Equals(".pdb", StringComparison.OrdinalIgnoreCase))
|
|
.ToList();
|
|
if (files.Any())
|
|
{
|
|
sb.Append(@"folder ""InstallDir:\");
|
|
sb.Append(swrInstallDir);
|
|
sb.AppendLine(@"\""");
|
|
|
|
foreach (var file in files)
|
|
{
|
|
sb.Append(@" file source=""!(bindpath.sources)\Redist\Common\NetCoreSDK\MSBuildExtensions\");
|
|
sb.Append(Path.Combine(relativeSourcePath, Path.GetFileName(file)));
|
|
sb.AppendLine("\"");
|
|
}
|
|
|
|
sb.AppendLine();
|
|
}
|
|
|
|
foreach (var subfolder in Directory.GetDirectories(sourceFolder))
|
|
{
|
|
string subfolderName = Path.GetFileName(subfolder);
|
|
string newRelativeSourcePath = Path.Combine(relativeSourcePath, subfolderName);
|
|
string newSwrInstallDir = Path.Combine(swrInstallDir, subfolderName);
|
|
|
|
AddFolder(sb, newRelativeSourcePath, newSwrInstallDir);
|
|
}
|
|
}
|
|
|
|
readonly string SWR_HEADER = @"use vs
|
|
|
|
package name=Microsoft.Net.Core.SDK.MSBuildExtensions
|
|
version=$(Version)
|
|
vs.package.branch=$(VsSingletonPackageBranch)
|
|
vs.package.internalRevision=$(PackageInternalRevision)
|
|
|
|
";
|
|
}
|
|
}
|