Visual Studio 2013使用什么C#编译器?如果我使用新的Roslyn编译器安装Visual Studio 2015,会影响我的 Visual Studio 2013 安装吗?
我问,因为当我们的代码是使用Visual Studio 2015构建时,我们有一些已知会失败的测试。有些数字在八位有效数字上有所不同。 Visual Studio 2015发布时的解决方案可能是增加测试的容差,但我想了解Visual Studio如何决定使用哪个编译器。
Visual Studio 2013可以显式设置为使用旧编译器吗?还是一个msbuild脚本?
答案 0 :(得分:10)
Visual Studio 2013使用什么C#编译器?如果我要安装 Visual Studio 2015及其新的Roslyn编译器会影响我的 Visual Studio 2013安装?
安装Visual Studio 2015 Preview不会影响Visual Studio 2013的安装,并且不会替换Windows目录中的.NET Framework安装文件夹中的旧C#和VB编译器。相反,Visual Studio 2015 Preview使用并包含下一版本的Microsoft Build Tools MSBuild 14.0的预览版,该版本安装在\ MSBuild \ 14.0下的32位Program Files文件夹中,并包含新的Roslyn编译器和代码分析库
对于C ++,没有任何重大变化,并且由于编译器位于特定Visual Studio安装的\ VC \ bin子文件夹中,因此它们不会相互影响。
Visual Studio 2013可以显式设置为使用旧编译器吗?要么 一个msbuild脚本?
没有必要,因为Visual Studio 2013只能使用旧的编译器,除非您安装并启用了已经过时的Roslyn CTP扩展。
答案 1 :(得分:8)
没有。安装Visual Studio 2015不会更改VS 2013使用的编译器。在命令行中,您可以通过运行相应的msbuild.exe
来选择
测试失败是由.NET Framework 4.6引起的,而不是编译器的更改。
通过按https://github.com/Microsoft/dotnet/blob/master/docs/testing-with-ryujit.md
设置'使用旧版JIT'环境COMPLUS_useLegacyJit
变量来解决问题
答案 2 :(得分:2)
安装VS2015将取代.NET Runtime并将其更新为4.5.3 - 我不知道是否更换了JIT编译器,但它是可能的。
在这种情况下,无论使用哪种C#编译器,都可以观察到不同的测试结果。
无论如何,安装4.5.3运行时 是对机器的重大改变,并且不能与非预览运行时并存,所以我不建议在生产机器上使用它。例如,Microsoft的调试器API,CLRMD(Microsoft.Diagnostics.Runtime nuget包)不再能够连接到4.5.3运行时 - 例如been reported。
我认为有更多的重大变化有待发现。
答案 3 :(得分:2)
也许VS 2015不会影响VS 2013使用的编译器,但它肯定会影响Roslyn(如果您安装VS 2015,您的旧版VS2015之前的Roslyn代码可能会停止工作)。对我来说,它引入了在ConfigR脚本中编译匿名类型的问题。
答案 4 :(得分:0)
I faced the issue by installing VS Professional 2015 Release side by side VS professional 2012. My MVC 3 Project created in VS 2012/ .net 4.0 I am not able to open now. I am able to open it in VS 2015/ .Net 4.0 only.