如何将Windows通用应用程序迁移到可移植库项目?

时间:2015-02-05 07:03:43

标签: c# portable-class-library win-universal-app

我以前开发过Windows通用应用程序。 我想将所有非平台特定代码迁移到可移植类库项目中进行进一步开发。如何实现?

在Windows Universal App中,有一些后端C#代码控制UI内容并操纵数据。我可能无法很好地分离非平台特定代码。在这种情况下,我还可以迁移到PCL项目吗?

我在可移植类库文档中搜索了以下链接: https://msdn.microsoft.com/library/gg597391.aspx

Portable Class Library documentation

描述看起来令人困惑。这是否意味着我只是将我之前的应用程序包包含在PCL项目中,然后一切正常?

2 个答案:

答案 0 :(得分:1)

您需要提取特定于平台的代码。你引用的文档是另一个方向:PCL包含在appx包中,而不是PCL中的app包。

根据平台特定代码的根深蒂固,您可以通过控制反转将其分离:定义PCL可用于回调到主机的接口,以获取PCL随后可以操作的平台特定数据。

例如,如果当前代码具有特定于平台的代码来打开文件并获取其内容,则PCL可以在主机中调用函数来打开文件并将流返回到内容。

答案 1 :(得分:1)

如何迁移

除非您将问题标题更改为“我如何将代码的平台无关部分移至PCL”,否则我相信没有其他人可以轻易理解您的意思。

我假设您已在Visual Studio中安装了Windows Universal应用程序项目。然后将代码移动到PCL,

  1. 只需创建一个空的PCL项目(​​选择正确的配置文件),然后将其添加为原始Windows Universal应用程序项目的参考。
  2. 剪切(不复制)并将应用项目中的一些源文件粘贴到此PCL项目中。
  3. 编译解决方案并解决问题。
  4. 如果您不知道什么是PCL配置文件,请阅读MSDN相关资料。如果您不知道应该将哪些源文件发送到PCL,哪些应保留在应用程序项目中,请进行实验或查看其他人的示例项目。

    关于您的困惑

    我只能说要理解你突出显示的内容,你应该仔细阅读同一个句子中没有突出显示的内容和副标题。

    显然,当您有一个PCL项目和一个引用PCL的Windows应用商店/手机应用项目时,在Visual Studio中生成部署包(.appx)时,最终的包将包含所有需要的程序集。

    显然不是你所描述的。