为什么无法删除 System.Drawing 并替换为 NuGet 包 System.Drawing.Common
Why unable to remove System.Drawing and replace with NuGet package System.Drawing.Common
我正在尝试删除 System.Drawing 的框架引用并改用 System.Drawing.Common
的 NuGet 包
但是,当我从 NuGet 包管理器安装 System.Drawing.Common
后删除 System.Drawing
时,我看到 System.Drawing
又回到了我的引用中。
我想删除它并只使用 NuGet 版本
这可能吗?
使用fuget to look at the package's nuspec,我们可以看到如下:
<frameworkAssemblies>
<frameworkAssembly assemblyName="mscorlib" targetFramework=".NETFramework4.6.1" />
<frameworkAssembly assemblyName="System" targetFramework=".NETFramework4.6.1" />
<frameworkAssembly assemblyName="System.Drawing" targetFramework=".NETFramework4.6.1" />
</frameworkAssemblies>
因此,程序包告诉 NuGet System.Drawing
是必需的。
如果您使用 packages.config
将 NuGet 包导入到您的项目中,按照设计,这种方式是可行的,NuGet 将告诉 Visual Studio 的项目系统将这些引用添加到包安装时间。因此,安装包将添加回引用。
使用带有 PackageReference 的 NuGet 包(需要 Visual Studio 2017,我不记得是哪个版本,可能是 15.2 或更高版本,但也许它在 15.0 中工作)不会做同样的事情。使用 PackageReference,仅将包引用添加到您的 csproj,然后通过构建系统自动处理传递依赖项,而无需修改您的 csproj。但是,并非所有项目类型都支持 PackageReference(如前所述,VS2015 及更早版本也不支持)。
我正在尝试删除 System.Drawing 的框架引用并改用 System.Drawing.Common
的 NuGet 包
但是,当我从 NuGet 包管理器安装 System.Drawing.Common
后删除 System.Drawing
时,我看到 System.Drawing
又回到了我的引用中。
我想删除它并只使用 NuGet 版本
这可能吗?
使用fuget to look at the package's nuspec,我们可以看到如下:
<frameworkAssemblies>
<frameworkAssembly assemblyName="mscorlib" targetFramework=".NETFramework4.6.1" />
<frameworkAssembly assemblyName="System" targetFramework=".NETFramework4.6.1" />
<frameworkAssembly assemblyName="System.Drawing" targetFramework=".NETFramework4.6.1" />
</frameworkAssemblies>
因此,程序包告诉 NuGet System.Drawing
是必需的。
如果您使用 packages.config
将 NuGet 包导入到您的项目中,按照设计,这种方式是可行的,NuGet 将告诉 Visual Studio 的项目系统将这些引用添加到包安装时间。因此,安装包将添加回引用。
使用带有 PackageReference 的 NuGet 包(需要 Visual Studio 2017,我不记得是哪个版本,可能是 15.2 或更高版本,但也许它在 15.0 中工作)不会做同样的事情。使用 PackageReference,仅将包引用添加到您的 csproj,然后通过构建系统自动处理传递依赖项,而无需修改您的 csproj。但是,并非所有项目类型都支持 PackageReference(如前所述,VS2015 及更早版本也不支持)。