我可以避免 NuGet 删除私有(复制本地)标签吗

MiG*_*Gro 5 .net nuget visual-studio-2017

自从我们的团队从 Visual Studio 2015 升级到 Visual Studio 2017 以来,我们遇到了 NuGet 包的问题。每次我们更新包(无论什么 feed)(例如 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>
Run Code Online (Sandbox Code Playgroud)

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

是否可以避免 NuGet Packet Manager 这样做?或者还有其他解决办法吗?

Leo*_*SFT 5

是否可以避免 NuGet Packet Manager 这样做?或者还有其他解决办法吗?

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

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

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

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

希望这可以帮助。