我正在玩Roslyn的一些更改,但不幸的是,即使是未经修改的解决方案也会在我运行时崩溃VisualStudioSetup.Next,并且在尝试加载MS程序集时出错.所以我做了一些简单的更改,用新版本替换了我机器的现有二进制文件和配置文件.改变了C:/Program Files (x86)/MSBuild/bin and Windows/Microsoft.NET/Framework64.
替换CSC,VBCSCompiler,DLL和配置文件会导致csc.exe在任何构建上抛出错误.它抱怨清单指定了不同版本的CodeAnalysis.CSharpDLL.它没有为文件甚至名称提供路径.我用新版本替换了上述文件夹中的配置和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]
Run Code Online (Sandbox Code Playgroud)
它尽管从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:该项目可以在解决方案资源管理器的 Compilers 文件夹中找到,并构建
Roslyn.Compilers.Extension.vsix. 这会部署用于在 IDE 中进行实际构建的命令行编译器的副本。它仅影响从安装的 Visual Studio 实验实例触发的构建,因此不会影响您的常规构建。请注意,如果您只安装这个,IDE 将不会知道您的构建中包含的任何语言功能。如果您经常研究新的语言功能,您可能希望考虑构建 CompilerExtension 和 VisualStudioSetup 项目,以确保真正的构建和实时分析同步。
描述VisualStudioSetup.Next清楚地说明了它的局限性和预期用途,即修复 IDE 错误:
VisualStudioSetup.Next:可以在解决方案资源管理器的 VisualStudio 文件夹中找到此项目,并构建 Roslyn.VisualStudio.Setup.vsix。理论上,它包含点亮下一版本 VS (Dev16) 功能的代码,但自 Dev15/VS2017 发布以来目前尚未更新。如果您正在修复 IDE 错误,那么这就是您想要使用的项目。
如果计划替换 Visual Studio 2017 默认实例中的 Roslyn 编译器,请执行以下操作:
Roslyn.Compilers.Extension.vsix软件包并提升安装扩展后。这次它应该在默认实例中可用。上述步骤也可以应用于 Visual Studio Build Tools。
请注意 - 如果您构建并使用未发布的代码,那么即使在安装步骤中它也会出现错误。