【问题标题】:System.Data.Common, System.Net.Http Framework vs Nuget assembly in ASP.NET Web API projectASP.NET Web API 项目中的 System.Data.Common、System.Net.Http 框架与 Nuget 程序集
【发布时间】:2018-08-16 09:49:21
【问题描述】:

我对这两个包含在 .NET Framework 中但在 Nuget 上也可用的库感到非常困惑。我的直觉是使用 Nuget 之一,因为我会得到更频繁的更新等。然而,Visual Studio 即使我已经引用了来自 nuget 的那个,msbuild 使用来自 .NET 框架的一个,位于:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib

我在 github 上找到的一种解决方法是从 msbuild 文件夹中删除这些库。但是每当我更新 VS Studio 时,它都会将它们带回那里。 nuget 包还引入了一些绑定重定向。我数不清有多少次构建顺利,然后第 X 次构建给出了一个对这些程序集毫无意义的错误。

您是否建议删除 nuget 包并使用框架中包含的包?

【问题讨论】:

    标签: c# msbuild nuget


    【解决方案1】:

    我在 Visual Studio 论坛上从 Jose Perez Rodriguez 那里得到了一个answer,它很好地解释了它:

    您好 Jakub,感谢您提出问题。抱歉,我们花了这么多时间 很久才回复。首先,我同意你的观点,这个空间在 一般有点令人困惑,但这里有一个 TL;DR 解释 问题。 System.Net.Http 和 System.Data.Common 包得到更新 更频繁,但仅适用于 .NET Core 实现,不适用于 .NET Framework,这是您的目标。 .NET 框架 实际上已经安装了这两个程序集的一个版本 GAC,但它不是最新版本(至少是这样的 对于框架

    总而言之,结论是无论您找到哪种解决方法 说从该目录中删除这些文件是不正确的,并且 永远不应该这样做,因为这可能会导致您的应用程序运行时 问题。为了让您的应用正常运行,请移除绑定 安装时由 NuGet 自动添加的重定向 System.Net.Http 和 Data.Common 包,并确保你 打开 AutoGenerateBindingRedirects。采取这些步骤后(和 确保你恢复那个 msbuild extensions 文件夹,因为你 说你从中删除了一些文件)你的应用程序最终应该有一个 使用最新版本的 bin 文件夹中的这些程序集的副本 它们,它还应该有一个具有正确绑定的应用程序配置 构建时生成的重定向。

    我们将在 github 中更好地解释这种行为,因为 很多人对这种行为感到困惑。我希望这能回答你 问题,但如果没有,请随时提出任何后续问题 你可能有。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-26
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      相关资源
      最近更新 更多