找出为什么 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
的文件中。基于此,您应该能够辨别问题所在。
我正在尝试使用 .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
的文件中。基于此,您应该能够辨别问题所在。