.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文件。
我可以去哪里阅读更多关于这些相互依赖关系的信息?
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