无论我做什么,.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
的一部分,并存在于Reference assemblies中。
所有这些都指出,这是一个公共的全局DLL,可以直接在VS中使用,而无需使用nuget进行安装。所以我很好奇您为什么仍在使用nuget进行安装。
Note:创建新的net frameowrk4.8
项目然后打开引用时,您会发现它已经引用了参考程序集中的system.net.http.dll
。因此,当您使用nuget来安装它或在HintPath
中使用nuget的路径时,它不会更改初始路径。
解决方案>>
要解决它,请卸载nuget软件包System.Net.Http
。右键单击该项目-> Manage Nuget Packages
->卸载它。
希望它可以帮助您。