【问题标题】:VS2015 C# UWP Build error, shared project and background taskVS2015 C# UWP Build错误,共享项目和后台任务
【发布时间】:2017-01-17 20:30:04
【问题描述】:

我想运行一个后台任务,它将使用许多与主项目相同的代码,所以我为我的后台任务创建了一个新项目,并为我的共享代码创建了一个新的共享项目。

我已将我的所有共享代码转移到共享代码项目中,我已将对共享项目的引用添加到我的主项目中并且项目正常工作。

然后,我将共享项目的引用添加到我的后台任务项目中,构建了解决方案并且它可以工作(在编译中工作)。

一旦我将后台任务项目的引用添加到我的主项目中,当我尝试构建解决方案时,我会收到以下错误:

公共类型有一个命名空间(“BackgroundTask”),它与其他命名空间(“SharedCode.Functions”)不共享公共前缀。 Windows 元数据文件中的所有类型都必须存在于文件名所暗示的命名空间的子命名空间中。 BackgroundTask C:\Users\User\documents\visual studio 2015\Projects\Project\BackgroundTask\WINMDEXP

如果我没有在主项目中添加对后台项目的引用并且我尝试运行后台任务,它会失败。

在我的后台任务项目中,在顶部,我包含了使用 SharedCode; 而当任务运行时,它只需要调用共享代码:

等待 SharedCode.Check();

后台任务项目,不需要直接使用SharedCode.Functions,会在SharedCode项目内部调用。

有什么想法吗?

仅供参考,共享代码将使用 SQLite.net-PCL 发出 http 请求并更新本地数据库

【问题讨论】:

    标签: c# visual-studio-2015 uwp background-process


    【解决方案1】:

    似乎有一个共享项目和运行时组件的基本命名空间规则。 (我以前从未听说过。)

    由于从运行时组件中生成的代码被导出的方式,它必须有一个单一的根命名空间。实现这一点的最简单方法是在点之前使用带有公共前缀的项目名称。

    因此,与其将项目称为

    • 我的应用
    • 共享代码
    • 后台任务

    你调用它们(并设置根命名空间)

    • MyApp(或 MyApp.Client)
    • MyApp.Shared
    • MyApp.BackgroundTask

    作为替代方案,如果您可以使用 in-process background task(取决于您的任务的用途),您可能会让事情变得更简单。

    【讨论】:

      【解决方案2】:

      您似乎正在使用旧的“共享”项目模板,该模板曾在 Windows 8 / Windows Phone 8 上使用过。

      在这类项目中,代码实际上被复制到不同的父项目中,这意味着即使你在这里看到三个项目,也只会生成两个 exe/dll。共享项目中的代码将被复制到windows和windows phone项目中。

      要实现您想要做的事情,您可以简单地创建一个常规的class library (Universal Windows) 来托管您的共享代码,一个Windows Runtime Component (Universal Windows) 库来托管后台任务入口点和一个Blank App (Universal Windows)

      您的后台任务和您的应用都将引用共享类库。

      您还可以将所有共享代码留在后台任务库 (WinMD) 中,然后在您的应用程序中使用它。

      【讨论】:

        猜你喜欢
        • 2016-11-29
        • 2018-10-28
        • 2021-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-11
        • 1970-01-01
        相关资源
        最近更新 更多