MSIL - 我可以找到用于构建/编译.NET程序集的Visual Studio版本吗?

时间:2015-03-20 21:05:29

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

用于构建汇编的程序集的程序名是否可用于MSIL代码中的任何位置?

1 个答案:

答案 0 :(得分:4)

Visual Studio不构建任何东西 - Visual Studio使用MSBuild来构建 1

  

Visual Studio托管MSBuild以加载和构建托管项目。

事实上,您可以通过下载Microsoft Build Tools来构建MSIL代码而无需 Visual Studio:

  

如果您的计算机上未安装Visual Studio,则可以使用Build Tools 2013构建托管应用程序。 Visual Basic和C#编译器也包含在此下载中。 (在早期版本中,这些工具包含在独立的.NET Framework中。)

满足ECMA 335标准的任何编译器都可以编译有效的公共语言基础结构(CLI)应用程序 - Mono C#编译器就是这样一个例子。

换句话说,我认为不可能从程序集中获取有关Visual Studio版本的信息。

除非Visual Studio将一些额外的元数据添加到程序集中(我不认为),要找出Visual Studio构建特定程序集的版本,您必须做一些事情,比如将自己的自定义属性添加到程序集中,然后可以使用反射来检索。

显然,您可以根据程序集所针对的.NET版本排除早期版本的Visual Studio(例如Visual Studio 2012是第一个支持.NET 4.5的版本)。

此表是从Wikipedia article for Visual Studio编译的:

.NET   Min Visual
       Studio version

1.0    2002 (7.0)
1.1    2003 (7.1)
2.0    2005 (8.0)
3.0    2005 (8.0)
3.5    2008 (9.0)
4.0    2010 (10.0)
4.5    2012 (11.0)
4.5.1  2012 (11.0)
4.5.2  2012 (11.0)
4.6    2015 (14.0)

1 默认情况下,Visual Studio 2015及更高版本使用新的Roslyn编译器进行编译。