【问题标题】:Would installing Visual Studio 2015 change the compiler used by VS 2013?安装 Visual Studio 2015 会改变 VS 2013 使用的编译器吗?
【发布时间】:2014-11-17 15:07:51
【问题描述】:

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

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

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

【问题讨论】:

  • 期望 float 类型有超过 7 个有效数字始终是代码中的错误,而不是编译器。超过第 7 位的随机噪声数字值受使用的抖动影响,抖动确实发生了变化。
  • 不要在生产机器上安装 VS2015。这是一个不受支持的预览
  • 为什么会有一个基于此线程“主要基于意见”的结束投票?!? O.o
  • 我安装了 2015 和 2013。据我所知,2015 年的安装对 2013 年的安装没有任何影响。
  • 再一次,我不是想“修复”任何东西,我要求解释 Visual Studio 的工作原理,以便了解当 Visual Studio 2015 发布时会发生什么(如果有的话)。目前,我们所有的开发人员和测试机器都给出了相同的结果(数字翻了一番)。这很好(虽然它持续)。当然,差异可以通过公差来管理——正如我在问题中所建议的那样!

标签: c# .net visual-studio visual-studio-2015


【解决方案1】:

Visual Studio 2013 使用什么 C# 编译器?如果我要安装 带有新 Roslyn 编译器的 Visual Studio 2015 会影响我的 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 扩展。

【讨论】:

    【解决方案2】:

    没有。安装 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 变量来解决问题

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

      • 因此,如果将 .Net 运行时升级到 4.5.3,那么并行运行这些似乎存在风险。还有其他已知问题吗?
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 您确定没有将解决方案升级到 2015,或将 2015 专用功能添加到您的项目中吗?我们使用 2010、2013 和 2015 打开相同的解决方案,没有任何问题。我们只是确保不做任何会迫使仅 2015 年(或 2013 年)行为的事情。
        猜你喜欢
        • 1970-01-01
        • 2015-03-15
        • 2016-07-09
        • 2017-09-14
        • 2017-08-06
        • 1970-01-01
        • 1970-01-01
        • 2016-11-06
        • 1970-01-01
        相关资源
        最近更新 更多