6

Visual Studio 2013 使用什么 C# 编译器?如果我要安装 Visual Studio 2015 及其新的 Roslyn 编译器,这会影响我的Visual Studio 2013安装吗?

我问是因为当我们的代码使用 Visual Studio 2015 构建时,我们有一些已知会失败的测试。有些数字在八位有效数字处有所不同。Visual Studio 2015 发布时的解决方案可能是增加测试的容差,但我想了解 Visual Studio 如何决定使用哪个编译器。

可以将 Visual Studio 2013 显式设置为使用旧编译器吗?还是一个 msbuild 脚本?

4

5 回答 5

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 扩展。

于 2014-11-25T13:41:38.790 回答
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变量来解决问题

于 2014-12-03T14:17:01.417 回答
2

安装VS2015会替换.NET Runtime,更新到4.5.3——不知道JIT编译器有没有被替换,但是有可能。

在这种情况下,无论使用哪种 C# 编译器,您都可以观察到不同的测试结果。

无论如何,安装 4.5.3 运行时对机器的一项重大更改,并且不能与非预览版运行时并存,所以我不建议在生产机器上使用它。例如,来自 Microsoft 的调试器 API、CLRMD(Microsoft.Diagnostics.Runtime nuget 包)不再可以连接到 4.5.3 运行时 -例如,此处已报告。

我认为还有更多的重大变化有待发现。

于 2014-11-20T13:18:31.780 回答
2

也许 VS 2015 不会影响 VS 2013 使用的编译器,但它肯定会影响 Roslyn(如果您安装 VS 2015,您的旧的、在 VS2015 之前的 Roslyn 代码可能会停止工作)。对我来说,它引入了在 ConfigR 脚本中编译匿名类型的问题。

于 2015-05-06T10:28:09.617 回答
0

我通过并排安装 VS Professional 2015 Release VS Professional 2012 遇到了这个问题。我在 VS 2012/.net 4.0 中创建的 MVC 3 项目现在无法打开。我只能在 VS 2015/.Net 4.0 中打开它。

于 2015-07-28T17:10:57.067 回答