.NET运行时、C#语言、编译器、visual studio的相互依赖性

本文关键字:studio 依赖性 编译器 运行时 语言 NET visual | 更新日期: 2023-09-27 18:26:23

我想使用新的C#语言特性。https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6

public class Foo {
  public string ToolTip { get; set; } = "This is my toolip";
}

为此,我已将我们所有的解决方案升级为VS2015解决方案。

我正在从事一个以.NET4为目标的MVC4项目。

这编译得很好,但未能在我们的构建服务器上构建,这让我怀疑所有部分是如何组合在一起进行发布的。

在我看来,新的语言功能将需要使用新的编译器(Roslyn?,它与VS2015?一起预装)。

编译器会把我的代码转换成IL,由运行时执行。因此,只要编译器支持我所针对的.NET运行时版本,我的前端Web服务器似乎就不需要升级,我们就可以利用C#的功能。

不过,让我停下来的是JIT编译的代码,比如cshtml文件。

我可以去哪里阅读更多关于这些相互依赖关系的信息?

.NET运行时、C#语言、编译器、visual studio的相互依赖性

C#语言

  • C#是一种高级语言,由编译器转换为MSIL
  • MSIL与平台/语言无关:C#、VBasic、F#都编译到同一MSIL
  • MSIL由.NET CLR执行
  • C#语言版本独立于.NET CLR,因此不需要在运行代码的服务器上更新CLR
  • 在项目文件中,选择要作为目标的.NET框架的版本,该版本确定编译器发出的MSIL,以便在目标服务器上运行
  • 将来的某些语言功能可能与旧版本的.NET Framework不兼容,但在这种情况下,您的项目将无法在编译时生成
  • 新的语言功能仅在编译器更新时可用
  • ASP.NET的独特之处在于,它既有在开发过程中进行的编译,也有视图文件的运行时编译

编译器

  • 从2015年开始,Roslyn是新的C#编译器
  • 在Roslyn之前,csc.exe是主要的编译器,它与.NET Framework一起提供
  • ASP.NET运行时将动态编译视图。要使用Roslyn,请在MVC项目中安装CodeDOM Provider NuGet Package
  • Roslyn在GitHub上

MSBuild

  • 围绕构建/部署.NET应用程序的工具套件
  • 利用封面下的特定编译器;我看不出有什么方法可以强制MSBuild使用旧的编译器
  • 用于在C:''Windows/Microsoft.NET/framework/v3.5/MBuild.exe下随.NET框架一起提供,利用csc.exe编译器
  • 从2013年开始,它开始在C:''Program Files(x86)/MBuild/14.0/MBuild.exe下发布Visual Studio版本,并利用Roslyn编译器
  • GitHub上的MSBuild

Visual Studio 2015

  • 用于C#和.NET应用程序的主要代码编辑环境
  • 安装.NET Framework 4.6.1
  • 安装MSBuild 14.0
  • 利用MSBuild.exe编译C#代码
  • 立即允许在编辑器中编写C#代码

.NET Framework/CLR

  • .NET Framework是公共语言运行时(CLR)+托管库和工具
  • CLR始终随.NET Framework主要版本一起提供
  • 针对.NET Framework的不同版本,您可以访问新的/经过修改的库,并在新的CLR中执行MSIL代码时提高性能
  • 注意:ASP.NET和ASP.NET MVC是.NET Framework的一部分,因此您
  • 当前版本

在MVC中使用C#6语言功能:

  • 安装最新的Visual Studio(这使用了最新版本的MSBuild,它利用最新的编译器(Roslyn)将C#代码转换为MSIL)
  • 通过NuGet将新的Roslyn CodeDOMProvider添加到您的项目中(它将作为引用的dll部署到您的web服务器上,并且是ASP.NET运行时用来动态编译视图的
  • 通过在生成服务器上安装最新的Visual Studio,将生成服务器更新为具有最新版本的MSBuild(和编译器)
  • 有关详细信息,请参阅MSDN

构建服务器失败的原因是,它可能使用了错误的ms构建版本。

罗斯林没有什么特别之处。它只是一组用于处理代码(解析、编译等)的库。在vs2015和相应的msbuild中,旧的C#编译器被更新的-roslyn所取代。

如果你想了解更多,这里有很好的复数形式课程https://www.pluralsight.com/courses/dotnet-compiler-platform-introduction

当涉及到构建服务器时,它取决于您使用的构建服务器。通常,您必须安装vs2015并指示它使用新的msbuild。您可以针对不同的运行时编译C#。

对于tfs2013,指定版本并更改生成模板TFS 2013 building.NET 4.6/C#6.0