使MSBuild在VS15预览中使用新的Roslyn编译器

本文关键字:Roslyn 编译器 MSBuild VS15 | 更新日期: 2023-09-27 18:14:34

我最近刚刚深入研究了Roslyn编译器的内容,我想知道一些可能性。我正在尝试使用features/tuples分支从Roslyn存储库构建Roslyn编译器,并替换VS15Preview'MSBuild'15.0'Bin文件夹中所需的DLL。但当我更换DLL并构建控制台应用程序项目时,我收到以下错误消息

严重性代码描述项目文件行抑制状态

错误指定的可执行任务";csc.exe";无法运行。无法加载文件或程序集"Microsoft.CodeAnalysis.CSharp,Version=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856a364e35"或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT异常:0x80131040(

我尝试替换的文件:Microsoft.CodeAnalysis.dllMicrosoft.CodeAnalysis.Csharp.dllcsc.exe

是否可以为C#构建自定义Roslyn编译器,并在VS15预览版中进行替换?

使MSBuild在VS15预览中使用新的Roslyn编译器

一种方法是将CscToolPath msbuild变量设置到新的roslyn构建的bin目录中。

我发现msbuild命令行(例如开始>开发者命令提示符(最方便。您可以在运行时将cd放入任何解决方案目录:

msbuild /p:CscToolPath=<PathToYourRoslynBinDir>`

如果你经常这样做,你也可以在.csproj中这样做:

<PropertyGroup>
    <CscToolPath>C:'your'roslyn'bin</CscToolPath>
</PropertyGroup>

显然,这只会影响构建,而不会影响Visual Studio或它的智能感知。要实现这一点,您需要遵循Roslyn repo中的《在Visual Studio中尝试更改》指南。您必须在Roslyn解决方案中构建一个VSIX项目。运行其中一个项目将启动Visual Studio的一个实验实例,您可以在其中进行更改。

M0sa的答案可能有效,但这只会为您提供支持MSBuild的构建。如果您还想在VS中测试它,那么您可以遵循Roslyn自己的文档。该页面告诉您如何替换Visual Studio中的"intellisense"(VisualStudioSetup项目符号(和Ctrl-Shift-B"Build Solution"以实际运行您的解决方案(CompilerExtension(。

如果您只想尝试构建Roslyn,可以通过在VS15中打开Roslyn.sln,然后运行Roslyn项目(无论是否调试(来完成。它将启动VS15的一个新实例,该实例使用您的Roslyn构建。