从生产部署中排除 roslyn 分析器 DLL

Excluding roslyn analyzer DLLs from production deployment

随着 Roslyn 分析器的引入,分析器(和任何依赖项)现在已添加到您的 Visual Studio 项目中 - 我添加的一个分析器包含 64 个依赖包。这些 DLL 然后包含在项目的主要输出中。其中一些 DLL 也会被项目使用,但很多只会被分析器使用。

因此,如果我使用发布功能(针对网站)创建部署包,或使用其他构建工具(例如 OctoPack),则包括主要输出中的所有文件(包括所有分析器)。我的观点是您应该只部署绝对必要的代码(即最小化攻击面)。

几个问题:

  1. 人们如何将分析器排除在生产安装之外,尤其是当您在 Visual Studio.

  2. 中使用发布功能时
  3. 如果您手动构建安装包(例如使用 WIX),您如何确定要从项目中排除哪些 DLL。

您需要在您的PackageReference中将PrivateAssets设置为All,例如:

<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.9.6" PrivateAssets="All" />

另请参阅 NuGet 文档中的 Controlling dependency assets