自从我们的团队从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这样做?还是还有其他解决方案?
答案 0 :(得分:0)
是否可以避免NuGet Packet Manager这样做?还是还有其他解决方案?
恐怕没有解决此问题的方法。因为这是NuGet的默认行为。
当我们更新nuget软件包或重新安装nuget软件包时,在卸载过程中,该项目及其所有元数据(例如,私有)都将从项目文件中删除。在安装步骤中,仅在需要时才添加显式私有元数据。因此,如果引用的程序集无论如何都将在本地复制,则<Private>true</Private>
将被删除。
因此,即使将标记从项目文件中删除,Visual Studio也会将引用的程序集复制到生成时的bin目录中。该程序集引用上的属性检查器还显示,即使没有该标记,Visual Studio也会继续将“复制本地”解释为“真”。
检查this thread了解更多详细信息。
希望这会有所帮助。