【发布时间】:2016-04-27 02:13:17
【问题描述】:
明确地说,我遵循 MVVM 模式,并且我想构建我的项目,以便我可以在 UWP 应用程序和标准 WPF 应用程序之间共享我的模型代码。我要分享的代码没有 UI。我不喜欢寻找新工具来替代我多年来一直在使用的工具来处理某些任务,例如日志记录、连接到面向文档的数据库等。
我尝试开始围绕我已经拥有的一些代码编写 UWP 包装器并直接引用模型项目。 Visual Studio 拒绝让这种情况发生,向我显示一条错误消息,显示“无法添加对项目 'ACK.Model' 的引用”。当我试图将模型放入通用库并从 WPF 应用程序中引用它时,同样的事情发生了。我不想分享 WPF 代码。只是没有引用 UI 库的模型层。
这是一个可怕的提议,因为这意味着如果我想做任何实质性的事情,我必须选择 100% 跳到 UWP 或保持 100% WPF。 NewtonSoft.JSON 可能有一个通用分布 (ASP.NET MVC),但是 ElasticSearch.NET 和其他制作重要应用程序所需的工具呢?
我找到了“可移植类库”项目类型的隐藏位置。 PCL 将允许我在 WPF 和通用应用程序之间共享 我的 代码,因为这是其中一种选择。这解决了我的代码中模型部分的简单情况,但我(仍然)不能使用我想要的一些库。我仍然需要大量没有 PCL 可用的库。
【问题讨论】:
-
欢迎来到我们的困境,我的朋友,就目前而言,我认为没有。在 UWP 对我们开放后,我们试图搜索这个。目前我们仍然依赖于 WebAPI。共享代码并将它们作为可重复使用的代码作为一种解决方案甚至参考重新使用目前没有帮助。由于 UWP 仍然专注于 Windows 家庭应用程序,而不是 ASP 的 Web 应用程序。如果您找到一种方法,请在您的问题中重新发布。
-
您必须抽象代码,这些代码使用第三方库并将其替换为适用于 WPF/UWP 的库。即,您不直接使用 NewtonSoft.JSON,而是使用
IJsonProvider接口。例如,在 UWP 上,您使用 microsoft Json 堆栈和在 WPF JsonSoft 上 -
谁投票结束了这个问题,你能详细说明为什么你觉得这不是主题。这不是关于计算的一般问题。这是一个关于不同C#平台之间代码共享的问题。
-
@JoaquínLuisMonleónIrisarri,当 NetStandard 不存在时,我问了这个问题。在 NetStandard 可用后,我也更新了我的答案,从那以后故事变得更好了。