.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
-->卸载
希望对您有所帮助。
无论我做什么,我的 .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
-->卸载
希望对您有所帮助。