gpt4 book ai didi

c# - 用新的 Roslyn 构建替换 c# 编译器

转载 作者:IT王子 更新时间:2023-10-29 04:51:13 25 4
gpt4 key购买 nike

我正在尝试对 Roslyn 进行一些更改,但不幸的是,即使是未修改的解决方案也会在我运行 VisualStudioSetup.Next 时崩溃,并在尝试加载 MS 程序集时出现错误。所以我做了一些简单的更改,并用新版本替换了我机器上现有的二进制文件和配置文件。在 C:/Program Files (x86)/MSBuild/bin 和 Windows/Microsoft.NET/Framework64 中进行了更改。

替换 CSC、VBCSCompiler、DLL 和配置文件会导致 csc.exe 在任何构建中抛出错误。它提示 list 指定了不同版本的 CodeAnalysis.CSharp DLL。它不提供文件的路径甚至名称。我已经用新版本替换了上述文件夹中的配置和 DLL。我需要实际替换哪些文件才能正常工作?

我为 CSC 的所有实例搜索了整个驱动器,并确保所有配置都指定了 DLL 的新版本,所以我不确定现在该去哪里找。

我知道可以将参数传递给 MSBuild 或将一个部分添加到 csproj 文件以指定编译器二进制文件的目录,但我想在这件事上取得胜利。

编辑:所以我决定只更改我的构建版本号。通过 VS 中的程序集属性执行此操作会导致构建失败。我尝试使用 MSBuild,但它在每个项目中都失败并出现此错误:

"F:\Git\Repos\roslyn\src\Compilers\CSharp\csc\csc.csproj" (default target) (1) ->

F:\Git\Repos\roslyn\build\Targets\Versions.props(42,5):

error MSB4184: The expression ""1".Substring(3)" cannot be evaluated.

startIndex cannot be larger than length of string.

Parameter name: startIndex F:\Git\Repos\roslyn\src\Compilers\CSharp\csc\csc.csproj]

虽然它在 VS 中构建得很好。

MSBuild 参数:/p:OfficialBuild=true/p:BuildNumber=1.3.1.60616/p:Configuration=Release

最佳答案

要在 Visual Studio 2017 的实验实例中替换编译器,目前最少。所需版本为 v15.3 或更高版本。并且必须安装 Roslyn.Compilers.Extension.vsix 而不是 VisualStudioSetup.Next

来自 DotNet Roslyn 文档的确切信息github repo 如下:

CompilerExtension: this project can be found inside the Compilers folder from the Solution Explorer, and builds Roslyn.Compilers.Extension.vsix. This deploys a copy of the command line compilers that are used to do actual builds in the IDE. It only affects builds triggered from the Visual Studio experimental instance it's installed into, so it won't affect your regular builds. Note that if you install just this, the IDE won't know about any language features included in your build. If you're regularly working on new language features, you may wish to consider building both the CompilerExtension and VisualStudioSetup projects to ensure the real build and live analysis are synchronized.

VisualStudioSetup.Next 的描述清楚地说明了它的限制和预期用途,这是修复 IDE 错误:

VisualStudioSetup.Next: this project can be found inside the VisualStudio folder from the Solution Explorer, and builds Roslyn.VisualStudio.Setup.vsix. In theory, it contains code to light up features for the next version of VS (Dev16), but currently hasn't been updated for that since Dev15/VS2017 shipped. If you're working on fixing an IDE bug, this is the project you want to use.

如果计划在 Visual Studio 2017 的默认实例中替换 Roslyn 编译器,则执行以下操作:

  1. 关闭 Visual Studio 2017 的所有实例。
  2. 双击 Roslyn.Compilers.Extension.vsix 包,然后提升安装扩展。这次它应该在默认实例中可用。

上述步骤也可以应用于 Visual Studio 构建工具。

当心 - 如果您构建和使用未发布的代码,即使在安装步骤中也会出现错误

关于c# - 用新的 Roslyn 构建替换 c# 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44739728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com