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

Make MSBuild use new Roslyn compiler in VS15 Preview

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

Severity Code Description Project File Line Suppression State

Error The specified task executable "csc.exe" could not be run. Could not load file or assembly 'Microsoft.CodeAnalysis.CSharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

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

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

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

我发现 msbuild 命令行(例如开始 > 开发人员命令提示符)对此最​​方便。您可以 cd 进入 运行 上的任何解决方案目录:

msbuild /p:CscToolPath=<PathToYourRoslynBinDir>`

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

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

显然,这只影响构建,不影响 Visual Studio 或者它是智能感知。要连接起来,您需要遵循 Roslyn 存储库中的 Trying Your Changes in Visual Studio 指南。您必须在 Roslyn 解决方案中构建 VSIX 项目之一。 运行 其中一个项目启动了 Visual Studio 的实验实例,您可以在其中进行更改。

M0sa 的答案可能有效,但是,它只会为您提供启用了 MSBuild 的构建。如果你也想在VS中测试一下,那么可以关注Roslyn's own documentation。该页面告诉您如何将 Visual Studio 中的 "intellisense"(VisualStudioSetup 项目符号)和 Ctrl-Shift-B "Build Solution" 替换为实际 运行 你的解决方案(CompilerExtension)。

如果您只想尝试您的 Roslyn 构建,您可以通过在 VS15 中打开 Roslyn.sln 然后 运行 Roslyn 项目(有或没有调试)来实现。它将启动一个新的 VS15 实例,它使用您构建的 Roslyn。