[英]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编译器,则执行以下操作:
Roslyn.Compilers.Extension.vsix
包,然后提升安装扩展名。 这次它应该在默认实例中可用。 上述步骤也可以应用于Visual Studio构建工具。
注意 - 如果您构建和使用未发布的代码,即使在安装步骤中也会出现错误 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.