Visual studio 从生产部署中排除roslyn analyzer DLL

Visual studio 从生产部署中排除roslyn analyzer DLL,visual-studio,roslyn,roslyn-code-analysis,Visual Studio,Roslyn,Roslyn Code Analysis,随着Roslyn analyzer的引入,analyzer和任何依赖项现在都添加到您的Visual Studio项目中—我添加的一个analyzer包括64个依赖包。这些DLL随后包含在项目的主要输出中。其中一些DLL也将被项目使用,但许多DLL将被分析仪使用 因此,如果我使用网站的发布功能创建了一个部署包,或者使用其他一些构建工具,例如OctoPack,那么包含主输出中所有分析器的所有文件都将包括在内。我的观点是,您应该只部署绝对必要的代码,即最小化攻击面 有几个问题: 人们如何从生产安装中排

随着Roslyn analyzer的引入,analyzer和任何依赖项现在都添加到您的Visual Studio项目中—我添加的一个analyzer包括64个依赖包。这些DLL随后包含在项目的主要输出中。其中一些DLL也将被项目使用,但许多DLL将被分析仪使用

因此,如果我使用网站的发布功能创建了一个部署包,或者使用其他一些构建工具,例如OctoPack,那么包含主输出中所有分析器的所有文件都将包括在内。我的观点是,您应该只部署绝对必要的代码,即最小化攻击面

有几个问题:

人们如何从生产安装中排除分析器,尤其是在Visual Studio中使用发布功能的情况下

如果您手动构建安装包(例如使用WIX),如何确定要从项目中排除哪些DLL

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

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

另请参见NuGet文档。

谢谢,这非常有用。这将对我们的一些项目起作用。不幸的是,我们的许多项目都是ASP.NETMVC,它们还没有迁移到PackageReference。