【问题标题】:How do I make an existing C# library UWP-compatible?如何使现有的 C# 库与 UWP 兼容?
【发布时间】:2016-04-19 23:57:06
【问题描述】:

我有一个简单的数据结构发布到 NuGet,它是半流行的。它不使用任何特殊的 Windows API,所以我希望它已经与 UWP 兼容。

但是,当人们尝试通过 NuGet 添加引用时,他们会看到

与 UAP 不兼容,版本=v10.0。
部分包不兼容 UAP,Version=v10.0。

我需要做什么才能使我的项目与 UWP 兼容 (同时仍保持与非 UWP 项目的兼容性,包括 .Net 2.0 支持)?我已经在线阅读了从“添加这个.json 文件”“你需要维护一个完全独立的项目”的答案

【问题讨论】:

  • 所以您只想拥有一个与所有目标框架兼容的 dll\project?因为如果不是,您可以将多个针对不同框架的 dll 放在一个 nuget 包中,当用户安装您的包时,将选择正确的一个。
  • @Evk:我可以用不同的项目配置来做到这一点吗?还是我需要单独的项目?在任何一种情况下,我该怎么做?我以前从未用 UWP 做过任何事情,并试图搜索编写 UWP 兼容库的教程,这似乎是荒谬且不必要的复杂。
  • 我更喜欢使用源代码共享,因为像PCL这样的东西有太多的限制。您只需在 Visual Studio 中创建 UWP 库项目,将 .NET 项目中的所有文件添加为链接(因此您有单个代码库)并编译该 UWP 项目。当然不会那么容易,在这种情况下你可以使用条件编译符号(#if WINDOWS_UWP // UWP 特定代码 #else // 非 UWP 代码)。您还可以使用 Visual Studio 共享项目功能。它接近于将文件添加为如上所述的链接,但更方便。然后将两者打包到一个 nuget 包中。

标签: c# win-universal-app


【解决方案1】:

目前有几种方法,

  1. 编写一个支持 UWP 兼容性的 PCL。
  2. 编写一个链接到通用源文件的 UWP 类库。
  3. 将库迁移到 .NET Core。

我将最后一个用于我的开源库,博客文章涵盖了详细信息,

https://blog.lextudio.com/2016/03/how-to-port-snmp-library-to-net-core/

【讨论】:

  • 这些选项是否与非 UWP 项目保持兼容性?我认为#2 至少打破了它。
  • @BlueRaja-DannyPflughoeft 我列出的所有方法都要求您创建新的类库项目。 #1 和 #3 允许您将新类库用于 UWP 和非 UWP 项目,而 #2 要求您将旧类库用于非 UWP 项目,而新类库则用于 UWP 项目。
  • 然而,据我所知,#3 不适用于 .net 2。不确定 pcl。
  • @Liero 我宁愿说它们都不适用于 .NET 2.0。如果任何认真的开发人员仍然针对那个旧平台,我会感到惊讶。
  • .net 3.5 使用 .net 2 运行时。 Sharepoint 2010 仍在许多公司中运行。它需要.net 3.5。但是,他可以为 .net 2 和 .net core(或 pcl)构建单独的程序集并将其放入单个 nuget 包中,因此它可以在任何地方使用
猜你喜欢
  • 2016-08-24
  • 2017-11-04
  • 1970-01-01
  • 2018-06-12
  • 2011-01-01
  • 2019-08-23
  • 2011-11-26
  • 2021-08-27
  • 1970-01-01
相关资源
最近更新 更多