我使用Xamarin開發iOS和Android應用程序。我創建了一個共同的項目,這對兩個平臺都很常見。 因爲我使用數據庫它的共同點,並把共享project.I需要加密數據庫,所以需要在共享項目中添加本地sqlite庫引用,以便我可以修改該代碼。在Xamarin的共享項目中添加項目引用
我的問題是:我還沒有找到任何方法在共享項目中添加其他項目/庫的引用。
這是錯誤還是預期的行爲?
任何解釋讚賞。
謝謝。
我使用Xamarin開發iOS和Android應用程序。我創建了一個共同的項目,這對兩個平臺都很常見。 因爲我使用數據庫它的共同點,並把共享project.I需要加密數據庫,所以需要在共享項目中添加本地sqlite庫引用,以便我可以修改該代碼。在Xamarin的共享項目中添加項目引用
我的問題是:我還沒有找到任何方法在共享項目中添加其他項目/庫的引用。
這是錯誤還是預期的行爲?
任何解釋讚賞。
謝謝。
有沒有「參考」從通常意義上的從共享項目添加項目引用。
確實有一個共享項目比當前打開更多,但它不是,這是目前的設計,儘管在某些方面有所限制。
總之,共享項目沒有生成輸出。它是從其他項目引用共享項目(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語句。
參考和組件不支持共享項目。因此,如果您沒有平臺特定的項目,則共享項目是沒有用的,因爲您將無法爲應用程序抽象任何所需的引用和/或組件。
A 共享項目取決於您在任何其他特定於平臺的項目上引用它,因此您將能夠使用此平臺特定項目使用的所有引用和組件。
要引用共享項目在任何特定平臺的應用程序,右擊引用文件夾的應用程序,並選擇編輯引用...,選擇該選項卡項目和檢查的框中輸入您的共享項目。之後,您可以使用該應用程序的任何參考共享項目。
在Xamarin中沒有添加對共享項目的引用的概念。
共享項目只是一個集中的項目,用於在多個項目(Android和iOS項目)之間共享代碼庫(如Model和ViewModel)。
解決方案:
添加引用到Android/iOS的項目,它會自動從共享項目訪問。
另外有趣的是,你不能自己創建一個。我希望使用一個交叉應用程序共享。我認爲這就像是一個大的包裝,像硬鏈接一樣模擬unix;) – kenny 2014-10-11 18:47:27
然後如何在共享項目中添加庫引用?如果不是,那麼它的用途是什麼?只是爲了共享代碼? – vITs 2014-10-11 18:59:56
您的共享項目可以訪問正在使用共享項目的所有項目引用......並且共享項目只是高級文件鏈接,唯一的區別是您必須爲所有3個項目鏈接文件一次(Android,iOS ,WP ...),否則你將不得不改變每個項目。注意,你可以在文件的左上角選擇當前項目的共享文件... – 2014-10-12 07:34:45