我对.NET Framework中包含的但在Nuget上可用的这两个库感到非常困惑。我的本能是使用Nuget,因为我会得到更频繁的更新等。但是,即使我引用了nuget中的一个,Visual Studio还是msbuild使用.NET框架中的一个。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib
我在github上发现的一种解决方法是从msbuild文件夹中删除那些库。但是,每当我更新VS Studio时,都会将它们带回那里。 nuget包还引入了一些绑定重定向。我无法确定构建可以进行多少次,然后Xth构建会给出一个错误,对于这些程序集来说,这是毫无意义的。
您是否建议删除nuget软件包并使用框架中包含的软件包?
答案 0 :(得分:0)
我在Visual Studio论坛上从Jose Perez Rodriguez那里得到了answer,它的解释很好:
您好,雅各布,谢谢您的提问。抱歉,我们花了这么多 渴望回应。首先,我同意你的观点, general有点令人困惑,但这是TL; DR对 问题。 System.Net.Http和System.Data.Common包以获取更新 更频繁,但仅适用于.NET Core实现,不适用于 .NET Framework是您的目标。 .NET Framework 实际上已经安装了这两个程序集的版本 GAC,但它不是最新版本(至少是这种情况) 适用于<4.7.2的框架),以及您的应用程序是否具有任何依赖关系 面向.NET Standard 1.4+,那么您很可能需要 这些程序集的最新版本,以便您的应用能够 在运行时正常工作。 .NET Framework的最新版本是 不是我所说的GAC中的一个,也不是软件包中的一个 之前的版本,但是在MSBuild Extensions文件夹中找到的版本 你发现的。这些版本实际上是.NET的最新版本。 框架,因此当我们的版本检测到您将需要它们时,我们 将它们注入到您的bin文件夹中,我们将其引用以便 能够解决任何运行时问题。
总而言之,结论是无论您找到哪种解决方法 说从该目录删除这些文件是不正确的,并且 绝对不要这样做,因为这可能会导致您的应用具有运行时 问题。为了让您的应用正常运行,请删除绑定 安装时由NuGet自动添加的重定向 System.Net.Http和Data.Common程序包,并确保您 打开AutoGenerateBindingRedirects。采取这些步骤之后(和 确保您恢复了msbuild extensions文件夹,因为您 说您从其中删除了一些文件)最后您的应用应该有一个 这些程序集的副本位于最新版本的bin文件夹中 它们,并且还应该具有带有正确绑定的应用程序配置 重定向在生成时生成。
我们将在github中更好地解释这种行为,因为 很多人对此行为感到困惑。我希望这能回答您 问题,但如果没有,请随时提出任何后续问题 你可能有。