簡體   English   中英

VS2015 C# UWP Build 錯誤,共享項目和后台任務

[英]VS2015 C# UWP Build error, shared project and background task

我想運行一個后台任務,它將使用很多與主項目相同的代碼,所以我為我的后台任務創建了一個新項目,並為我的共享代碼創建了一個新的共享項目。

我已將所有共享代碼轉移到共享代碼項目中,我已將共享項目的引用添加到我的主項目中,並且該項目有效。

然后我將我的共享項目的引用添加到我的后台任務項目中,構建了解決方案並且它可以工作(在編譯中工作)。

一旦我將我的后台任務項目的引用添加到我的主項目中,當我嘗試構建解決方案時,我會收到以下錯誤:

公共類型有一個命名空間 ('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 請求並更新本地數據庫

似乎共享項目和運行時組件有一個基本的命名空間規則。 (我以前從未聽說過這個。)

由於從運行時組件生成的代碼被導出的方式,它必須有一個單一的根命名空間。 實現此目的的最簡單方法是在點之前使用帶有公共前綴的項目名稱。

因此,而不是將項目稱為

  • 我的應用程序
  • 共享代碼
  • 后台任務

您調用它們(並設置根命名空間)

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

作為替代方案,如果您可以改為使用進程內后台任務(取決於您的任務的作用),您可以讓事情變得更簡單。

您似乎正在使用在 Windows 8 / Windows Phone 8 上使用的舊“共享”項目模板。

共享應用

在這種項目中,代碼實際上被復制到不同的父項目中,這意味着即使您在這里看到三個項目,也只會生成兩個 exe/dll。 共享項目中的代碼將被復制到 windows 和 windows phone 項目中。

為了實現您想要做的事情,您可以簡單地創建一個常規class library (Universal Windows)來托管您的共享代碼、一個Windows Runtime Component (Universal Windows)庫來托管后台任務入口點和一個Blank App (Universal Windows)

您的后台任務和您的應用程序都將引用共享類庫。

您還可以將所有共享代碼保留在后台任務庫 (WinMD) 中,並從您的應用程序中使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM