找出为什么 Microsoft.Build.Evaluation.Project.Build() returns false

Figure out why Microsoft.Build.Evaluation.Project.Build() returns false

我正在尝试使用 .csproj 文件构建 C# 项目。 为此,我使用以下代码:

Microsoft.Build.Evaluation.Project project = new Microsoft.Build.EvaluationProject(projectFile);
bool success = project.Build();

但并非所有项目都已构建,对于某些项目,我得到 false 作为 project.Build() 的结果。 任何想法如何理解出了什么问题?

或者也许有人可以建议使用 .csproj 文件编译项目的替代方法?

您需要在 Build 方法中添加一个 ILogger 作为参数。我建议实施一个 as the MSDN article suggests。只需复制粘贴他们的代码,添加任何缺失的引用,就可以了。

然后你可以调用Build如下:

Microsoft.Build.Evaluation.Project project = new Microsoft.Build.Evaluation.Project(projectFile);
BasicFileLogger logger = new BasicFileLogger();
logger.Parameters = logFilePath;
logger.Verbosity = LoggerVerbosity.Normal; //Increase it if you don't get enough data
bool success = project.Build(logger);

示例记录器会将您在正常构建期间看到的所有数据写入位于 logFilePath 的文件中。基于此,您应该能够辨别问题所在。