首页 > 解决方案 > 是否可以将 Windows 8.1 应用升级到 UWP Windows 10 应用并在 UWP 应用中拥有 WCF 项目?

问题描述

我需要升级现有的 Windows 8.1 Mobile 应用程序才能在 Windows 10 上运行并开始研究这个问题。

我已设法将代码移植到 UWP 并构建并运行 UWP 应用程序 - 到目前为止一切顺利。

然而,在应用程序中有一个 WCF 项目用于获取数据,这不起作用。

我目前收到此错误无法加载文件或程序集'System.ServiceModel,Version=3.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089'。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

UWP 应用程序甚至可能包含 WCF 项目并且这会起作用吗?在 VS2015 解决方案中,这一切都有效,但在 VS2019 中它不起作用,因为在 ServiceFactory 类中甚至无法创建实例。

我几乎没有 UWP 或 Windows 8.1 移动应用程序的经验,任何建议都会很棒。

谢谢格雷戈尔

标签: wcfuwpwindows-8.1-universal

解决方案


请注意,WCF客户端实际上可用于 .NET Core/.NET Standard!只有服务器端部分不适用于 .NET Core。

  • WCF 服务:.NET 框架
  • WCF 客户端:基于 .NET Standard(与 .NET Core 和 .NET Framework 一起使用)

在您的情况下,如果我理解正确,您想要调用现有服务,这意味着您需要 WCF 客户端,并且您实际上可以将该 WCF 客户端与 .NET Core/.NET Standard 2.0 以及 UWP 一起使用。

请执行下列操作:

  1. 将新的 .NET 标准类库项目添加到您的解决方案(这将替换您已经在解决方案中的 WCF 客户端库)
  2. 在解决方案资源管理器中,右键单击依赖项并选择“添加连接的服务”

在此处输入图像描述

  1. 这将在 Visual Studio 中打开一个页面,您可以在其中看到“Microsoft WCF Web 服务参考提供程序”:

单击此以添加 WCF 服务引用

单击它,将打开下面的对话框:

在此处输入图像描述

  1. 在上面的对话框中,输入您的服务的 URL,该对话框将为您生成整个 WCF 客户端代码,它还将添加对所需 WCF NuGet 包的引用。

  2. 从 UWP 项目中引用 .NET Standard 2.0 类库项目并使用它。

注意:.NET Core 中的 WCF-Client 不支持 .NET Framework 项目中已知的配置文件条目。这意味着配置是在 C# 代码中生成的。

我希望这会有所帮助,托马斯


推荐阅读