gpt4 book ai didi

c++ - 使用 MSBuild API 编译 vcxproj 时出现问题 - 错误 MSB4057

转载 作者:太空宇宙 更新时间:2023-11-04 12:13:05 25 4
gpt4 key购买 nike

我有一个新创建的 C++ (.vcxproj) 项目,我已经向其中添加了一些文件。现在,我尝试使用以下代码对其进行编译:

var clogger = new ConsoleLogger(LoggerVerbosity.Diagnostic);
var pc = new ProjectCollection(new Dictionary<string, string>{{"Configuration", "Release"},
{"ToolsVersion", "4.0"}},
new[] { clogger }, ToolsetDefinitionLocations.Registry);
pc.DefaultToolsVersion = "4.0";
pc.LoadProject(projectPath);

var project = new Project(pc);
try
{
Assert.That(project.Build("Release"), Is.True);
}
finally
{
pc.UnregisterAllLoggers();
}

不幸的是,尝试编译项目时出现以下错误:

Building with tools version "4.0".
MSBUILD : error MSB4057: The target "Rebuild" does not exist in the project.

我已经尝试了很多目标,包括根本不指定目标,但我总是遇到同样的错误。我假设 Rebuild 目标确实在项目中,因为命令行中的 msbuild 可以很好地构建它。我错过了什么?

最佳答案

  1. 按如下方式设置您的 Project 对象:

       //pc.LoadProject(projectPath); - redundant
    //var project = new Project(pc); - let `ProjectCollection` return your project

    var project = pc.LoadProject(projectPath);
  2. Build() 需要一个 Target名称,不是 Property姓名:

所以这里传递重建目标:

Assert.That(project.Build("Rebuild"), Is.True);

关于c++ - 使用 MSBuild API 编译 vcxproj 时出现问题 - 错误 MSB4057,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9002120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com