首页 > 解决方案 > 我可以避免 NuGet 删除私有(复制本地)标签吗

问题描述

由于我们的团队从 Visual Studio 2015 升级到 Visual Studio 2017,我们遇到了 NuGet 包的问题。每次我们更新包(无论是什么提要)时,例如 MVC,更新都会删除项目文件中的“Private”标签:

<Reference Include="System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.4\lib\net45\System.Web.Mvc.dll</HintPath>
  <Private>True</Private>
</Reference>

就我个人而言,是否将程序集复制到任何输出目录并不重要。但似乎 Visual Studio 本身存在问题,因为它在代码编辑器中有数百个错误,尽管编译成功完成。

是否可以避免 NuGet Packet Manager 这样做?或者有没有其他解决方案?

标签: .netvisual-studio-2017nuget

解决方案


是否可以避免 NuGet Packet Manager 这样做?或者有没有其他解决方案?

恐怕没有这样的方法可以解决这个问题。因为这是 NuGet 的默认行为。

当我们更新 nuget 包或重新安装 nuget 包时,在卸载期间,该项目连同其所有元数据(例如,私有)从项目文件中删除。在安装步骤中,只有在需要时才会添加显式私有元数据。因此,<Private>true</Private>如果引用的程序集无论如何都会在本地复制,则将被删除。

因此,Visual Studio 会在构建时将引用的程序集复制到 bin 目录,即使该标记已从项目文件中删除。该程序集引用上的属性检查器还显示,即使没有该标记,Visual Studio 也会继续将“复制本地”解释为“真”。

检查此线程以获取更多详细信息。

希望这可以帮助。


推荐阅读