使用Roslyn编译时编译源代码
在CI服务器上的MSBuild任务中使用Roslyn编译之前是否可以修改源代码? 我已经成功地做了我想要的VS但是我想知道它是否可能在VS之外。 目前我正在研究Workspace API和编译器API,它们似乎是实现这一目标的正确工具,但我仍然不确定它是否可行? 特别是我担心返回我对MSBuild所做的更改以允许它继续工作。
这绝对是我们正在考虑的一个场景。 今天有一些问题让它变得有点困难:
- 您不能使用Workspace API来加载项目/解决方案,因为您已经在msbuild中。
- 要使用常规编译器API,您需要自己构建一个编译,这可能是一堆工作。
将来,我们想提供一个“从csc / vbc命令行字符串创建工作区”,这将使这更容易。
看看挂钩到编译器(csc.exe或vbc.exe)本身以及在MS Build Task中使用Roslyn的问题,以前的讨论。
关于在MS构建任务中使用Roslyn的问题 ,
public class MyTask : Task
将任务更改为AppDomainIsolatedTask是一个快速修复。 我没有msdn帐户所以我会在这里发布。 希望它可以提供帮助。
我个人没有能够测试这个,(所以如果你愿意的话,把这个“答案”作为评论),但是阅读关于Roslyn的内容,尤其是这篇博客文章,它看起来应该是可能的 (寻找“重写” “段落。
显然,你可以从源代码构造一个语法树(对于我猜的编译器来说并不太令人惊讶),然后使用API修改它,最后将它写回字符串/文件或其他任何东西。
另请参阅MSDN关于Roslyn语法树的概念,以及关于“语法转换”的演练 。
上述就是C#学习教程:使用Roslyn编译时编译源代码分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/951314.html