我想在C#中使用更新的Microsoft.Build.Evaluation
API创建自定义MSBuild脚本。我遇到的问题是这个较新的API不支持.sln
文件。较旧的已弃用Microsoft.Build.Engine
API确实支持.sln
文件,但我想使用较新的文件,因为1)不推荐使用,2)似乎有更多联机文档和用法供参考。我已经看到,当成功编译解决方案时,MSBuild可以创建一个.metaproj
文件,当此作业在CMD中进行时:set MSBuildEmitSolution=1
。我需要.metaproj
文件才能够首先编译解决方案。 API中是否有将.sln
转换为.metaproj
的内容?有解析.sln
文件的库吗?如何以编程方式从C#使用带有MSBuild的SLN文件?
0
A
回答
0
我在更多的搜索后找到了它。在网上找到好的示例有点困难,因为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);
+0
感谢您在这里分享您的解决方案,您可以将其标记为答案,这样可以帮助其他社区成员获得相同的问题。 –
+0
@ Leo-MSFT其实,我现在看到了一些非常奇怪的行为,而且我之前看到了这部分内容,这就是为什么我确认了您的解决方案,然后未确认一次。如果我在调试器中运行此路径作为属性添加,它将起作用,但是如果不在调试器中,它将无法找到正确的目标文件。如果我删除路径属性,则相反。当它在调试器外部添加的路径失败时,它将在v14的指定目录中查找。 Microsoft.Build软件包还没有v15。也许这是它的一部分 – JamesFaix
相关问题
- 1. 如何以编程方式更新VSTS文件(使用c#)
- 2. 如何从C#中以编程方式调用“文档格式”?
- 3. 如何以编程方式从网站下载文件c#
- 4. MSBuild文件VS SLN和项目文件
- 5. 以编程方式从C#应用程序安装Apk文件
- 6. 以编程方式生成自定义MSBuild .Targets文件
- 7. 以编程方式选择使用C#的文件
- 8. 如何使用C/C++以编程方式检查Windows系统文件夹?
- 9. 如何以编程方式创建/更新带有emacs的标签文件?
- 10. 如何从文件以编程方式导入用户库
- 11. Msbuild和SLN unbindig
- 12. 如何以编程方式使用C#中的EnvDTE打开文件
- 13. 如何以编程方式找到使用C#的Dropbox文件夹?
- 14. 如何以编程方式取消嵌入的MsBuild构建
- 15. Xamarin C# - 如何以编程方式从变量引用资源文件
- 16. 以编程方式使用c打开安全Sharepoint文件#
- 17. 如何使用Paperclip以编程方式设置文件上传
- 18. 如何以编程方式使用Android按钮XML文件
- 19. 如何以编程方式使用Intents打开文件?
- 20. 如何使用JS(Internet Explorer)以编程方式下载文件
- 21. 如何以编程方式使用c#从Word文档中删除一行?
- 22. 如何以编程方式在“隐藏”中设置文件C
- 23. 如何以编程方式下载大文件在C#中
- 24. 如何以编程方式使用log4j2
- 25. 如何以编程方式使用plist?
- 26. 如何以编程方式使用BroadCastReceiver
- 27. 如何以编程方式使用NSTextFinder?
- 28. Eclipse中的C#SLN文件方法(Java)
- 29. 以编程方式使用事件处理程序的C#+
- 30. 如何以编程方式使用纯C语言创建转储文件?
你的意思是'Microsoft.Build.BuildEngine' API不支持的.sln文件?如果没有,您可以使用API'Microsoft.Build.BuildEngine'以编程方式构建sln文件:https://stackoverflow.com/questions/6511380/how-do-i-build-a-solution-programmatically-in-c。此外,Microsoft.Build程序集的.NET 4.0版本在解析Visual Studio解决方案文件的Microsoft.Build.Construction名称空间中包含一个SolutionParser类。 https://stackoverflow.com/questions/707107/parsing-visual-studio-solution-files。 –