这个编译器的重要性是什么?是必须拥有还是可以没有?无论如何,拥有另一个编译器的目的是什么,或者仅仅是一个未来的项目?一个简短的概述,将不胜感激。
Answers:
Microsoft.Net.Compilers软件包的重点是,与该软件包一起分发的编译器将用于编译项目,而不是.NET Framework或Visual Studio附带的编译器。最实际的直接好处是,它允许您的项目使用C#6功能,然后允许将这些项目构建在未安装C#6编译器的系统上,例如,在您未安装C#6编译器的系统上想要安装完整的Visual Studio 2015。
目前,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删除依赖项时并未将其删除。对于此类客户的建议是简单地删除对软件包的引用。不再需要它。
正如其他人所说,它包含用于C#和VB.NET的.NET编译器。
打包的有趣之处在于,您可以为项目指定编译器的特定版本,包括Visual Studio尚未附带的版本。
我们在https://github.com/dotnet/project-system中使用它,它是Visual Studio的开源组件。它使我们能够使用预发行版的编译器来处理VS附带的编译器不支持的dogfood语言功能。
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
v1.0.8及以下版本中的依赖项,因此您可能会因此而看到它