下面的代码尝试使用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);当我运行这段代码时,它不会构建任何东西。我可以看到,除了一个特定版本的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 但是,当我成功地使用VS IDE构建解决方案时,将显示以下信息:
C:\Program Files (x86)\MSBuild\12.0\bin\Csc.exe
ExportWindowsMDFile:
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\winmdexp.exe为什么在我的代码中会出现这种情况&我如何更改它呢?
发布于 2014-08-10 08:14:20
截至Visual 2013,MSBuild is no longer a .NET Framework component。这意味着对打包和部署进行一些调整。旧的MSBuild框架仍然存在于.NET框架文件夹中。但是,在安装Visual 2013时,12.0也安装到C:\Program (x86)\MSBuild\12.0中。请注意,构建工具可与Visual here分开使用。
我第一次尝试的时候也遇到了和你一样的情况。问题是您可能引用了旧的"4.0“MSBuild框架程序集。您需要引用位于C:\Program (x86)\MSBuild\ 12.0 \bin中的新的12.0程序集(必须在VS中浏览以添加引用)。您可能需要Microsoft.Build、Microsoft.Build.Engine和Microsoft.Build.Framework。一旦我更新了这些参考资料,我就发现它在构建时使用了与VS 2013相同的工具。
https://stackoverflow.com/questions/25225025
复制相似问题