C# .Net项目总是重新生成,而不是由CopyLocal属性导致的最新版本

C# .Net项目总是重新生成,而不是由CopyLocal属性导致的最新版本,c#,.net,visual-studio,msbuild,csproj,C#,.net,Visual Studio,Msbuild,Csproj,无论我做什么,我的.net项目都会重建。我读了这篇文章,在我的项目中发现了CopyLocal问题 我收到以下消息:项目“PROJECTNAME”不是最新的。输出位置缺少CopyLocal引用“D:\…PROJECTPATH…\bin\x64\Debug\System.Net.Http.dll”。 我的System.Net.Http.dll是这样引用的(不要问我为什么设置了两次Private): Visual Studio本身向我展示了它取自“引用程序集”: 我发现,从“引用程序集”中获取的程序

无论我做什么,我的.net项目都会重建。我读了这篇文章,在我的项目中发现了CopyLocal问题

我收到以下消息:
项目“PROJECTNAME”不是最新的。输出位置缺少CopyLocal引用“D:\…PROJECTPATH…\bin\x64\Debug\System.Net.Http.dll”。

我的System.Net.Http.dll是这样引用的(不要问我为什么设置了两次Private):

Visual Studio本身向我展示了它取自“引用程序集”:

我发现,从“引用程序集”中获取的程序集永远不会复制到输出文件夹

现在的问题是,如果我将CopyLocal更改为false,它会工作,但在任何NuGet还原之后,它会再次设置为True。我假设这是因为HintPath引用的是一个NuGet包,其中CopyLocal应该设置为True

它只发生在“System.*”引用中。该项目是.NET4.8,我使用的是最新的VS2019

有没有办法防止这种情况发生,或者我是否错过了一些我如何修复这种情况的方法?这是在一个相当大的解决方案中发生的,如果所有的东西都是一直重建的,那么它将永远需要构建

我尝试了ReSharper构建,这很有效,但如果可能的话,我想坚持标准

谢谢你的帮助

有什么办法可以防止这种情况发生,还是我错过了一些我能做的事情 修好这个?这是一个相当大的解决方案,需要 如果所有的东西都一直在重建,那么就永远可以建造

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

实际上,
System.Net.Http.dll
只是
netframework4.8
的一部分,并且存在于

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

注意:当您创建一个新的
net frameowrk4.8
项目并打开reference时,您会发现它已经从引用程序集中引用了
system.net.http.dll
。因此,当您使用nuget安装它或使用
HintPath
中的nuget路径时,它不会更改初始路径

解决方案

要解决此问题,请卸载nuget软件包
System.Net.Http
。右键单击项目-->
管理nuget软件包-->卸载它


希望它能帮助您。

您有两个对System.Net.Http.dll的引用。一个来自nuget包,另一个是普通框架引用。你只需要一个,扔掉这个包裹。谢谢你的回答。我看到它引用了System.Net.Http NuGet包,对于.Net Framework 4.5,不知何故,这种依赖性也会在.Net 4.8中触发。我在.NETFramework4.8上用一个干净的项目测试了它,没有添加任何内容。我刚刚添加了ActiveDirectory NuGet,它一直在重建,除非我强制卸载所有System.*NuGet软件包。