2014-10-11 89 views
5

我使用Xamarin開發iOS和Android應用程序。我創建了一個共同的項目,這對兩個平臺都很常見。 因爲我使用數據庫它的共同點,並把共享project.I需要加密數據庫,所以需要在共享項目中添加本地sqlite庫引用,以便我可以修改該代碼。在Xamarin的共享項目中添加項目引用

我的問題是:我還沒有找到任何方法在共享項目中添加其他項目/庫的引用。

這是錯誤還是預期的行爲?

任何解釋讚賞。

謝謝。

+0

另外有趣的是,你不能自己創建一個。我希望使用一個交叉應用程序共享。我認爲這就像是一個大的包裝,像硬鏈接一樣模擬unix;) – kenny 2014-10-11 18:47:27

+0

然後如何在共享項目中添加庫引用?如果不是,那麼它的用途是什麼?只是爲了共享代碼? – vITs 2014-10-11 18:59:56

+1

您的共享項目可以訪問正在使用共享項目的所有項目引用......並且共享項目只是高級文件鏈接,唯一的區別是您必須爲所有3個項目鏈接文件一次(Android,iOS ,WP ...),否則你將不得不改變每個項目。注意,你可以在文件的左上角選擇當前項目的共享文件... – 2014-10-12 07:34:45

回答

3

有沒有「參考」從通常意義上的從共享項目添加項目引用

確實有一個共享項目比當前打開更多,但它不是,這是目前的設計,儘管在某些方面有所限制。

總之,共享項目沒有生成輸出。它是從其他項目引用共享項目(s)來生成可編譯的輸出 - 基於您可能已經指定的任何條件編譯符號。

爲了讓你添加你需要使用的NuGet以包添加到您的解決方案源碼庫引用。然後

這些的NuGet包也將會安裝和創建適合於各指定平臺的特定平臺的庫引用。

如果你把你的平臺,具體項目看,你會看到,當您添加的NuGet包,並將其安裝到適當的包庫輸出這些項目的參考TreeView節點擴大。

然後,您可以在代碼的共享項目對那些在自己的項目中引用這些的NuGet包。

更新1: -

如果您已經從的NuGet添加程序包,大多數事情應該行了完美一般來說,除非有任何的平臺包括具體的東西。

如果存在特定於特定平臺的功能, 對於被只直接添加到特定平臺的項目一個圖書館,那麼你可以使用條件#如果語句在共享項目訪問這些特定於平臺的差異。

更新2: -

實施例: -

1)你有共享項目引用此的Android的iOS的WindowsPhone平臺特定的項目共享項目

2)創建另一個新的WindowsPhone類庫項目

3)下面的類添加到它: -

public class MyWindowsPhoneClass1 
{ 
    public string SayHello() 
    { 
     return "Hello"; 
    } 
} 

4)在您的的WindowsPhone平臺具體項目,添加參考(在這種情況下,這將是一個解決方案參考,因爲它是同一解決方案的一部分)到新的WindowsPhone類庫項目您在步驟2中創建

5)在共享項目輸入下面的代碼到一些功能: -

PhoneClassLibrary1.MyWindowsPhoneClass1 o; 
o = new PhoneClassLibrary1.MyWindowsPhoneClass1(); 
string strResponse = o.SayHello(); 

和編譯。

你會發現你會得到編譯錯誤的的iOS的Android,爲PhoneClassLibrary1找不到。

但是....

如果您現在更改代碼: -

#if WINDOWS_PHONE 
    PhoneClassLibrary1.MyWindowsPhoneClass1 o; 
    o = new PhoneClassLibrary1.MyWindowsPhoneClass1(); 
    string strResponse = o.SayHello(); 
#endif 

你會看到你的項目現在編譯上ALL 3平臺,由於使用的條件#if語句

+0

但是如何訪問共享項目中的庫,這是在平臺特定的項目中引用的。沒有參考我們如何才能在普通的地方編碼? – vITs 2014-10-12 05:20:22

+0

我知道關於特定於平臺的編譯,但是我可以在共享項目中使用這些庫的api而沒有任何參考? – vITs 2014-10-12 06:53:14

+0

我已經更新了我的答案,請參閱*更新2 *,並舉例說明。不會將參考添加到共享項目中。 – Pete 2014-10-12 07:06:12

0

參考和組件不支持共享項目。因此,如果您沒有平臺特定的項目,則共享項目是沒有用的,因爲您將無法爲應用程序抽象任何所需的引用和/或組件。

A 共享項目取決於您在任何其他特定於平臺的項目上引用它,因此您將能夠使用此平臺特定項目使用的所有引用和組件。

要引用共享項目在任何特定平臺的應用程序,右擊引用文件夾的應用程序,並選擇編輯引用...,選擇該選項卡項目和檢查的框中輸入您的共享項目。之後,您可以使用該應用程序的任何參考共享項目

0

在Xamarin中沒有添加對共享項目的引用的概念。

共享項目只是一個集中的項目,用於在多個項目(Android和iOS項目)之間共享代碼庫(如Model和ViewModel)。

解決方案:

添加引用到Android/iOS的項目,它會自動從共享項目訪問。