使用服务引用时加载的“System.Servicemodel”版本错误

问题描述 投票:0回答:1

我在 Visual Studio 中有一个目标为“netstandard2.0”的项目。我添加了一个服务引用(WCF Web 服务),结果 Visual Studio (NuGet) 为我安装了一个包引用“System.ServiceModel.Http”版本 4.4.4

当我构建并运行我的应用程序时,应用程序会给出错误消息。在事件查看器中,我看到以下内容:

*平台:便携式。例如:System.IO.FileNotFoundException:无法加载文件或程序集“System.ServiceModel.Http,Version=4.1.2.3,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。该系统找不到指定的文件。 文件名:'System.ServiceModel.Http,版本=4.1.2.3,文化=中性,PublicKeyToken=b03f5f7f11d50a3a' *

在我看来,系统需要程序集版本 4.1.2.3。为什么它认为需要另一个版本?

我尝试通过 NuGet 安装版本 4.1.2.3,但该版本似乎不存在,所以我无法安装它。

我感觉它与netstandard 2.0有关,但我似乎不知道如何解决这个问题。

希望有人能帮助我。

c# wcf .net-assembly .net-framework-version .net-standard-2.0
1个回答
0
投票

在我看来,系统需要程序集版本 4.1.2.3。为什么它认为需要另一个版本?

要求4.1.2.3是正确的,但不是要求“另一个版本”;包版本和库(程序集)版本不是同一件事(尽管为了简单起见,许多作者保持两者同步)。如果我们查看here,并展开 lib/netstandard2.0 并查看 System.ServiceModel.Http.dll 的文件元数据,我们会看到:

  • 全名:System.ServiceModel.Http,版本=4.1.2.3,文化=中性,PublicKeyToken=b03f5f7f11d50a3a
  • 强名称:是的,版本 4.1.2.3

所以 4.1.2.3 绝对是正确的版本。然而,所提供的消息听起来并不像是“不匹配”;;听起来该文件完全丢失了。检查所需的 dll 是否确实存在于应用程序的构建输出中。

© www.soinside.com 2019 - 2024. All rights reserved.