ASP.NET Web API项目中的System.Data.Common,System.Net.Http框架与Nuget程序集

时间:2018-08-16 09:49:22

标签: c# msbuild nuget

我对.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软件包并使用框架中包含的软件包?

1 个答案:

答案 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中更好地解释这种行为,因为   很多人对此行为感到困惑。我希望这能回答您   问题,但如果没有,请随时提出任何后续问题   你可能有。