我在 Visual Studio 2017 中使用 NuGet 包管理器安装了以下程序集
Microsoft.Build;
Microsoft.Build.Framework.
Microsoft.Build.Utilities.Core
一切都在版本15中
我想用 Msbuild 构建一个 C++ 项目
public static void Build(string namePerozhe)
{
Logger l = new Logger();
ProjectCollection pc = new ProjectCollection();
pc.DefaultToolsVersion = "15.0";
pc.Loggers.Add(l);
Dictionary<string, string> GlobalProperty = new Dictionary<string, string>();
GlobalProperty.Add("Configuration", "Release");
GlobalProperty.Add("Platform", "Win32");
BuildRequestData buildRequest = new BuildRequestData(namePerozhe, GlobalProperty, null, new[] { "Build" }, null);
BuildParameters buildParameters = new BuildParameters(pc)
{
OnlyLogCriticalEvents = false,
DetailedSummary = true,
Loggers = new List<Microsoft.Build.Framework.ILogger> { l }.AsEnumerable()
};
var result = BuildManager.DefaultBuildManager.Build(buildParameters, buildRequest);
}
但我收到以下错误:
无法从程序集中加载“SetEnv”任务
C:\Program Files\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\
Microsoft.Build.CppTasks.Common.dll。
无法加载文件或程序集“Microsoft.Build.Utilities.Core,Version=15.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。
该系统找不到指定的文件。
确认声明正确,程序集及其所有依赖项均可用,
并且该任务包含实现 Microsoft.Build.Framework.ITask 的公共类。
当我在 Visual Studio 中构建这个项目时,它将构建没有错误。但是当我想以编程方式构建它时,就会出现此错误。
还有另一个问题没有任何答案可以帮助我。
我必须执行三个主要步骤:
- 从 NuGet 下载版本 15+ Microsoft.Build 包。那些不是来自 NuGet 的已经过时了。
-
下载 Microsoft.Build.Runtime 包。如果您不下载该包,您的项目可能仍会构建,但会在运行时崩溃
LoadProject
.
- 在我的 app.config 中连接 BindingRedirects。看:https://developercommunity.visualstudio.com/content/problem/24545/microsoftbuildcpptaskscommon-references-in Correct.html https://developercommunity.visualstudio.com/content/problem/24545/microsoftbuildcpptaskscommon-references-incorrect.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)