相关疑难解决方法(0)

BuildManager使用另一个版本的MSBuild

以下代码尝试以编程方式构建解决方案,使用BuildManager:

ProjectCollection pc = new ProjectCollection();
pc.DefaultToolsVersion = "12.0";
pc.Loggers.Add(fileLogger);
Dictionary<string, string> globalProperty = new Dictionary<string, string>();
BuildRequestData buildRequest = new BuildRequestData(solutionName, globalProperty, null, new[] { "Build" }, null);

BuildParameters buildParameters = new BuildParameters(pc)
{
    DefaultToolsVersion = "12.0",
    OnlyLogCriticalEvents = false,
    DetailedSummary = true,
    Loggers = new List<Microsoft.Build.Framework.ILogger> { fileLogger }.AsEnumerable()
};

var result = BuildManager.DefaultBuildManager.Build(buildParameters, buildRequest);
Run Code Online (Sandbox Code Playgroud)

当我运行此代码(它没有构建任何btw)时,我可以看到csc.exe除了一个特定版本之外还使用了以下编译器winmdexp.exe:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Csc.exe
ExportWindowsMDFile:
    C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\winmdexp.exe 
Run Code Online (Sandbox Code Playgroud)

但是当我使用VS IDE成功构建解决方案时,会出现以下信息:

C:\Program Files (x86)\MSBuild\12.0\bin\Csc.exe
ExportWindowsMDFile:
    C:\Program Files …
Run Code Online (Sandbox Code Playgroud)

c# msbuild solution microsoft.build winmd

9
推荐指数
1
解决办法
4947
查看次数

标签 统计

c# ×1

microsoft.build ×1

msbuild ×1

solution ×1

winmd ×1