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

use*_*Bee 75 c# vb.net asp.net-mvc

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

小智 88

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


Jar*_*Par 26

目前没有目的 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 删除依赖项时它没有被删除。对此类客户的建议是简单地删除对包的引用。不再需要它了。


ViR*_*iTy 5

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

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

https://github.com/dotnet/roslyn

  • 谢谢。我之前曾经看过官方文档,但仍然觉得该项目的目的含糊不清。 (4认同)
  • @usefulBee 基本上它是微软开源运动的结果,例如查看维基百科以获取更多信息:https://en.wikipedia.org/wiki/.NET_Compiler_Platform (2认同)