Microsoft.Net.Compilers的目的是什么?

时间:2015-12-30 16:49:31

标签: c# asp.net-mvc vb.net

这个编译器的重要性是什么?它是必须拥有还是可以拥有?无论如何,拥有另一个编译器的目的是什么,还是仅仅是一个未来的项目?简要概述将不胜感激。

4 个答案:

答案 0 :(得分:81)

Microsoft.Net.Compilers包的重点是,使用该包分发的编译器将用于编译项目,而不是.NET Framework或Visual Studio附带的编译器。最实用的直接好处是,它允许您的项目使用C#6功能,然后允许这些项目构建在没有安装C#6编译器的系统上,例如在您不能使用的持续集成服务器上我想安装完整的Visual Studio 2015。

答案 1 :(得分:16)

目前,Microsoft.Net.Compilers没有任何目的。这是一个不建议使用的NuGet程序包,在Visual Studio 16.5之后将停止生成。有一个名为Microsoft.Net.Compilers.Toolset的后继程序包。该程序包具有与Microsoft.Net.Compilers相同的功能,但可与.NET Desktop和.NET Core MSBuild实例一起使用。

即使如此,Microsoft.Net.Compilers.Toolset也不适合一般使用。该软件包有两种特定用途:

  1. 用作解除阻塞编译器中崩溃错误的客户的短期工具。对于此类客户,我们可以在将修订合并到Roslyn存储库后仅一个小时左右的时间,使用此程序包解除对他们方案的阻止。在修复程序将其纳入关联的Visual Studio或.NET SDK服务版本之前,这将充当桥梁。发生这种情况时,将要求客户从其解决方案中删除软件包,并依靠正式发布的工具集。
  2. 用作在Roslyn和.NET SDk的正式版本之间移动二进制文件的机制。

该软件包不是不是,仅供客户对其产品进行长期的长期消费。我了解到有些客户选择这样做,但也不支持这种用法。通过依赖于新版本的MSBuild或.NET SDK中的任务/目标,该软件包可以并且经常会导致中断。

我们鼓励希望使用新版本编译器的客户使用其官方发行版之一:

  1. 使用Visual Studio生成工具SKU。
  2. 使用.NET SDK

注意:几年前,Microsoft.Net.Compilers软件包作为Microsoft.CodeDom.Providers.DotNetCompilerPlatform软件包的一部分得到了正式支持。从2.0版开始,尽管已删除了对Microsoft.Net.Compilers的依赖,但现在它是一个完全独立的程序包。同时,我们已经不再使用Microsoft.Net.Compilers,因为它不再有任何明确的用例。

这确实意味着某些客户意外地在他们的项目文件中发现了Microsoft.Net.Compilers,因为当Microsoft.CodeDom.Providers.DotNetCompilerPlatform删除依赖项时,该文件并未被删除。对于此类客户的建议是简单地删除对软件包的引用。不再需要它。

答案 2 :(得分:4)

它是一个为开源C#和Visual Basic编译器提供丰富代码分析API的软件包。

您可以在github上找到大量文档:

https://github.com/dotnet/roslyn

答案 3 :(得分:0)

正如其他人所说,它包含用于C#和VB.NET的.NET编译器。

作为软件包的一个有趣的方面是,您可以为项目指定编译器的特定版本,包括Visual Studio尚未附带的版本。

我们在https://github.com/dotnet/project-system中使用它,它是Visual Studio的开源组件。它使我们能够使用预发行版的编译器来处理VS附带的编译器不支持的dogfood语言功能。