【发布时间】:2014-05-13 22:35:10
【问题描述】:
有段时间我觉得Framework版本和C#版本是一样的东西,所以一旦你在电脑上安装了下一个Framework版本,就应该使用它。
后来发现框架没有直接和C#版本挂钩,同一台机器上可以同时存在多个C#编译器,所以编译器和C#版本应该是一样的吧。
现在我明白编译器版本和C#版本不一样了……
Visual Studio 命令提示符 (2010):C:\>csc
Microsoft (R) Visual C# 编译器版本 4.0.30319.33440
适用于 Microsoft (R) .NET Framework 4.5
VS 2013 的开发者命令提示符:C:\>csc
Microsoft (R) Visual C# 编译器版本 12.0.30110.0
适用于 C# 5
我们可以看到
- VS 2010 使用 C#4 的编译器版本 4.0(??我只是可以假设,因为没有明确提及);
- VS 2013 使用 C# 5 的编译器版本 12.0(这是明确提到的)
知道compiling using different language versions could bring different results给用户
问题
如何找出哪个 C# 版本(不是编译器版本,而是语言版本)使用 VS 构建我的具体项目?
C# 编译器和语言版本之间是否存在严格、清晰和透明的联系?
我能否指示 Visual Studio(如果从一个 Studio 版本迁移到另一个版本时出现迁移问题)为我的具体解决方案使用不同的编译器版本?
【问题讨论】:
-
鉴于编译器是将一堆文件作为输入并输出另一个文件的软件,而 c# 基本上是一种规范,因此它们的版本控制方式不同并不让我感到惊讶。跨度>
-
@Thorsten Dittmar :不。同一个框架可以使用不同的 C# 版本(编译器)
-
@Default:相关问题将 .NET Framework 版本与 C# 版本相关联。我问的是编译器和语言之间的相同链接,不关心框架。
-
@ThorstenDittmar 查看问题中的链接。
-
它是 VS2013 中重要的 msbuild 重组的一部分。键入“where csc.exe”以查看发生了什么。使用 Visual Studio 命令提示符之类的命令的目的是让 Microsoft 担心是否正确。
标签: c# .net visual-studio-2010 compiler-construction visual-studio-2013