由于我们的团队从 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 这样做?或者有没有其他解决方案?
最佳答案
Is it possible to avoid NuGet Packet Manager to do so? Or ist there any other solution?
恐怕没有这样的方法可以解决这个问题。因为这是 NuGet 的默认行为。
当我们更新 nuget 包或重新安装 nuget 包时,在卸载期间,该项目连同其所有元数据(例如,私有(private))从项目文件中删除。在安装步骤中,只有在需要时才会添加显式私有(private)元数据。因此,
<Private>true</Private>
如果引用的程序集无论如何都会在本地复制,则将被删除。因此,Visual Studio 会在构建时将引用的程序集复制到 bin 目录,即使该标记已从项目文件中删除。该程序集引用上的属性检查器还显示,即使没有该标记,Visual Studio 也会继续将“复制本地”解释为“真”。
查看this thread了解更多详情。
希望这可以帮助。
关于.net - 我可以避免 NuGet 删除私有(private)(复制本地)标签吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52608585/