c# - .Net 项目总是重建,而不是由 CopyLocal 属性引起的最新
问题描述
无论我做什么,我的 .net 项目都会重建。我读了这篇文章https://oz-code.com/blog/visual-studio-keeps-rebuilding-projects-no-good-reason/,我在我的项目中发现了 CopyLocal 问题。
我收到了这条消息:Project 'PROJECTNAME' is not up to date. CopyLocal reference 'D:\...PROJECTPATH...\bin\x64\Debug\System.Net.Http.dll' is missing from output location.
。
我的 System.Net.Http.dll 是这样引用的(不要问我为什么 Private 设置了两次):
Visual Studio 本身向我展示了它取自“参考程序集”:
正如我所知道的,从“参考程序集”中获取的程序集永远不会复制到输出文件夹中。
现在的问题是,如果我将 CopyLocal 更改为 false 它可以工作,但是在任何 NuGet 还原后它将再次设置为 True。我认为这是由于 HintPath 引用了应将 CopyLocal 设置为 True 的 NuGet 包这一事实引起的。
它只发生在“System.*”引用中。该项目是 .net 4.8,我使用的是最新的 VS2019。
有什么办法可以防止这种情况发生,还是我错过了如何解决这个问题?这是在一个相当大的解决方案中发生的,如果一切都一直在重建,那么构建起来就需要很长时间。
我尝试了 ReSharper-Build,这很有效,但如果可能的话,我想坚持标准。
感谢您的任何帮助。
解决方案
有什么办法可以防止这种情况发生,还是我错过了如何解决这个问题?这是在一个相当大的解决方案中发生的,如果一切都一直在重建,那么构建起来就需要很长时间。
正如Hans所说,您system.net.http.dll
在同一个项目中以不同的方式引用了两个,这样会造成构建混乱,从而无法确定引用的版本。它总是在重建。
事实上,System.Net.Http.dll
它只是参考程序集的一部分Net Framework4.8
并存在于参考程序集中。
所有这些都表明这是一个公共的、全局的 DLL,可以直接在 VS 中使用,而无需使用 nuget 安装它。所以我很好奇你为什么还在使用 nuget 来安装它。
注意:当您创建一个新net frameowrk4.8
项目然后打开引用时,您会发现它已经system.net.http.dll
从 Reference 程序集中引用。所以当你使用nuget安装或者使用nuget中的路径时HintPath
,不会改变初始路径。
解决方案
要解决这个问题,请卸载nuget包System.Net.Http
。右键项目--> Manage Nuget Packages
-->卸载它。
希望它可以帮助你。
推荐阅读
- java - Spring-Batch csv 文件和相关的其他 csv 文件
- nginx - Nginx 移除 URL 路径并将其作为查询参数
- android - OneSignal - ANDROID - NotificationExtenderService
- django - 如何在 django models.py 中使用 ListField,同时在 settings.py 中使用 DJONGO 作为引擎
- java - Android:如何从年份打开数据选择器片段
- 2sxc - 如何为 RelationShipFilter 使用 In Filter 功能
- c# - C# 计算字符串表达式并返回结果
- python - 有没有办法检测二值化图像中的对象?
- python - 如何从@commands.has_role() 获取“错误”消息
- sql-server - MS SQL Server:防止执行计划过时