这个编译器的重要性是什么?它是必须拥有还是可以拥有?无论如何,拥有另一个编译器的目的是什么,还是仅仅是一个未来的项目?简要概述将不胜感激。
答案 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也不适合一般使用。该软件包有两种特定用途:
该软件包不是不是,仅供客户对其产品进行长期的长期消费。我了解到有些客户选择这样做,但也不支持这种用法。通过依赖于新版本的MSBuild或.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)
答案 3 :(得分:0)
正如其他人所说,它包含用于C#和VB.NET的.NET编译器。
作为软件包的一个有趣的方面是,您可以为项目指定编译器的特定版本,包括Visual Studio尚未附带的版本。
我们在https://github.com/dotnet/project-system中使用它,它是Visual Studio的开源组件。它使我们能够使用预发行版的编译器来处理VS附带的编译器不支持的dogfood语言功能。