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

时间:2018-10-02 12:42:37

标签: .net visual-studio-2017 nuget

自从我们的团队从Visual Studio 2015升级到Visual Studio 2017以来,我们遇到了NuGet软件包的问题。每次我们更新软件包(无论是什么供稿),例如MVC更新会删除项目文件中的“私人”标签:

<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这样做?还是还有其他解决方案?

1 个答案:

答案 0 :(得分:0)

  

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

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

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

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

检查this thread了解更多详细信息。

希望这会有所帮助。