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

C# MSIL-我可以找到用于生成/编译.NET程序集的Visual Studio版本吗?,c#,.net,visual-studio-2012,C#,.net,Visual Studio 2012,用于生成写入程序集中的程序集的程序名是否在MSIL代码中的任何位置都可用 Visual Studio不构建任何东西-Visual Studio使用它进行构建1: Visual Studio承载MSBuild以加载和生成托管项目 事实上,您可以通过下载Microsoft: 如果您的计算机上没有安装Visual Studio,则可以使用生成工具2013生成托管应用程序。Visual Basic和C#编译器也包含在本下载中。(在早期版本中,这些工具包含在独立的.NET Framework中。) 任何符

用于生成写入程序集中的程序集的程序名是否在MSIL代码中的任何位置都可用

Visual Studio不构建任何东西-Visual Studio使用它进行构建1:

Visual Studio承载MSBuild以加载和生成托管项目

事实上,您可以通过下载Microsoft:

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

任何符合标准的编译器都可以编译有效的公共语言基础设施(CLI)应用程序—C#编译器就是这样一个例子

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

除非VisualStudio向程序集添加了一些额外的元数据(我认为不是),否则要找出VisualStudio的哪个版本构建了一个特定的程序集,您必须做一些事情,比如向程序集添加您自己的自定义属性,然后您可以使用反射来检索这些属性

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

此表是从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及更高版本使用新编译器进行编译。

Visual Studio不生成任何内容-Visual Studio使用它进行构建1:

Visual Studio承载MSBuild以加载和生成托管项目

事实上,您可以通过下载Microsoft:

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

任何符合标准的编译器都可以编译有效的公共语言基础设施(CLI)应用程序—C#编译器就是这样一个例子

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

除非VisualStudio向程序集添加了一些额外的元数据(我认为不是),否则要找出VisualStudio的哪个版本构建了一个特定的程序集,您必须做一些事情,比如向程序集添加您自己的自定义属性,然后您可以使用反射来检索这些属性

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

此表是从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及更高版本使用新编译器进行编译。

如果程序集未在Visual Studio中编译,该怎么办?VS只是一个IDE,而不是一个编译器。它包括一个,但并不一定意味着它被用于该作业。编译器可以是csc、Roslyn或mcs(Mono编译器)。。。这里并没有涉及Visual Studio。
DumpBin
返回的字段之一是
链接器版本。我完全不知道信息在头文件中的什么位置,但这可能是您想要的。看看这里:如果程序集不是在VisualStudio中编译的呢?VS只是一个IDE,而不是一个编译器。它包括一个,但并不一定意味着它被用于该作业。编译器可以是csc、Roslyn或mcs(Mono编译器)。。。这里并没有涉及Visual Studio。
DumpBin
返回的字段之一是
链接器版本。我完全不知道信息在头文件中的什么位置,但这可能是您想要的。看这里: