我正在尝试使用较新的Microsoft.Build.Evaluation
API在C#中创建自定义MSBuild脚本。我遇到的问题是这个较新的API不支持.sln
个文件。较旧的已弃用的Microsoft.Build.Engine
API支持.sln
个文件,但我想使用较新的文件,因为1)它不被弃用2)似乎有更多的在线文档和用法参考。我已经看到,当在CMD中进行此分配时,MSBuild可以在成功编译解决方案时创建.metaproj
文件:set MSBuildEmitSolution=1
。我需要.metaproj
文件才能首先编译解决方案。 API中是否有任何内容可以将.sln
转换为.metaproj
?是否有用于解析.sln
文件的库?
答案 0 :(得分:3)
经过多次搜索,我发现了它。由于MSBuild API的两个不同版本,以及从命令行运行MSBuild的流行,因此在线查找好的示例有点困难。
以下是使用较新的MSBuild API的代码:
var pc = new ProjectCollection();
var parameters = new BuildParameters(pc)
{
Loggers = new[] { _logger } //Instance of ILogger instantiated earlier
};
var request = new BuildRequestData(
projectFullPath: pathToMySlnFile, //Solution file path
globalProperties: myPropertyDictionary,
toolsVersion: null,
targetsToBuild: myTargetsArray,
hostServices: null,
flags: BuildRequestDataFlags.ProvideProjectStateAfterBuild);
var buildResult = BuildManager.DefaultBuildManager.Build(parameters, request);