繁体   English   中英

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

[英]Replacing c# compiler with new Roslyn build

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

替换CSC,VBCSCompiler,DLL和配置文件会导致csc.exe在任何构建上引发错误。 它抱怨清单指定了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的实验实例中替换编译器当前min。 所需版本为v15.3或更高版本。 并且有必要安装Roslyn.Compilers.Extension.vsix而不是VisualStudioSetup.Next

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

CompilerExtension :此项目可以在Solution Explorer的Compilers文件夹中找到,并构建Roslyn.Compilers.Extension.vsix 这将部署用于在IDE中进行实际构建的命令行编译器的副本。 它只影响从安装的Visual Studio实验实例触发的构建,因此不会影响常规构建。 请注意,如果只安装此命令,IDE将不会了解您的构建中包含的任何语言功能。 如果您经常处理新的语言功能,您可能希望考虑构建CompilerExtension和VisualStudioSetup项目,以确保实际构建和实时分析同步。

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

VisualStudioSetup.Next :此项目可以在Solution Explorer的VisualStudio文件夹中找到,并构建Roslyn.VisualStudio.Setup.vsix。 理论上,它包含用于为下一版本的VS(Dev16)点亮功能的代码,但是自Dev15 / VS2017发布以来,目前还没有更新。 如果您正在修复IDE错误,那么这就是您要使用的项目。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM