.Net 项目总是重建,不是由 CopyLocal 引起的最新 属性

.Net project always rebuilds, not up to date caused by CopyLocal property

无论我做什么,我的 .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 本身向我展示了它取自 "Reference Assemblies":

而且我发现,从 "Reference Assemblies" 获取的程序集永远不会复制到输出文件夹。

现在的问题是,如果我将 CopyLocal 更改为 false,它会起作用,但在任何 NuGet 恢复后,它将再次设置为 True。我假设这是由于 HintPath 引用了一个 NuGet 包,其中 CopyLocal 应该设置为 True。

它只发生在 "System.*" 引用中。该项目是 .net 4.8,我使用的是最新的 VS2019。

有什么方法可以防止这种情况发生,或者我是否遗漏了一些可以解决此问题的方法?这是在一个相当大的解决方案中发生的,如果一直重建所有内容,则需要永远构建。

我尝试了 ReSharper-Build,效果不错,但如果可能的话,我想坚持使用标准。

感谢您的帮助。

Is there any way to prevent this, or did i miss something how I can fix this? This is happening in a quite big solution and it takes forever to build if everything is rebuilt all the time.

正如 Hans 所说,您在同一个项目中以不同的方式引用了两个 system.net.http.dll,因此它会造成构建混乱,从而无法确定参考资料。它总是重建。

其实System.Net.Http.dll只是Net Framework4.8的一部分,存在于Reference assemblies中。

所有这些都表明这是一个public全局DLL,可以直接在VS中使用,无需使用nuget安装。所以我很好奇你为什么还在使用nuget来安装它。

注意:当你新建一个net frameowrk4.8项目,然后打开引用,你会发现它已经从引用程序集引用了system.net.http.dll。所以当你使用nuget安装它或者使用HintPath中的nuget路径时,它不会改变初始路径。

解决方案

解决请卸载nuget包System.Net.Http.项目右键-->Manage Nuget Packages-->卸载

希望对您有所帮助。