我在 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有关,但我似乎不知道如何解决这个问题。
希望有人能帮助我。
在我看来,系统需要程序集版本 4.1.2.3。为什么它认为需要另一个版本?
要求4.1.2.3是正确的,但不是要求“另一个版本”;包版本和库(程序集)版本不是同一件事(尽管为了简单起见,许多作者保持两者同步)。如果我们查看here,并展开 lib/netstandard2.0 并查看 System.ServiceModel.Http.dll 的文件元数据,我们会看到:
所以 4.1.2.3 绝对是正确的版本。然而,所提供的消息听起来并不像是“不匹配”;;听起来该文件完全丢失了。检查所需的 dll 是否确实存在于应用程序的构建输出中。