【问题标题】:Make MSBuild use new Roslyn compiler in VS15 Preview让 MSBuild 在 VS15 Preview 中使用新的 Roslyn 编译器
【发布时间】:2016-10-24 15:12:05
【问题描述】:

我最近刚刚深入研究了 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=31bf3856ad364e35' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

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

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

【问题讨论】:

    标签: c# .net visual-studio roslyn roslyn-code-analysis


    【解决方案1】:

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

    我发现 msbuild 命令行(例如 Start > Developer Command Prompt)最方便。您可以在运行时将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 的实验性实例,您可以在其中进行更改。

    【讨论】:

    • 它似乎有效,而且似乎正是我想要的。但我有一个小问题。我改变了一些元组的东西,我的 VS15 说有一些错误,但是当我使用“msbuild”方法编译项目时,我没有任何问题。我还可以告诉 VS15 连接我更改的 dll,以便不在编辑器本身中显示这些错误消息吗?因为显然 VS15 使用了其他 dll。似乎所有需要的 dll 都放在这里 %MSBuildToolsPath%。如果我错了纠正我。谢谢!
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 不,我想将我的 Roslyn 版本与现有的 VS15 预览编辑器一起使用,而不是实验性的。
      猜你喜欢
      • 2016-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多