共用專案程式代碼共用

共用專案可讓您撰寫許多不同應用程式專案所參考的常見程序代碼。 此程式碼會編譯成每個參考專案的一部分,並且可以包含編譯器指示詞,以協助將平台專用功能併入到共用程式碼基底中。

共用專案(有時也稱為共用資產專案)可讓您撰寫多個目標專案之間共用的程式代碼,包括 Xamarin 應用程式。

它們支援編譯程式指示詞,以便有條件地包含平臺特定程序代碼,以編譯成參考共用專案的專案子集。 還有 IDE 支援可協助管理編譯程式指示詞,並將程式代碼在每一個應用程式中的外觀可視化。

如果您過去曾使用檔案連結在專案之間共用程式代碼,共用項目的運作方式類似,但IDE支援已大幅改善。

什麼是共享專案?

與大多數其他專案類型不同,共用專案沒有任何輸出(以 DLL 形式),而是將程式代碼編譯成參考它的每個專案。 下圖說明這一點 - 概念上,共用專案的整個內容會「複製到」每個參考專案,並編譯為它們中的一部分。

Shared Project architecture

共用專案中的程式代碼可以包含編譯程式指示詞,這些指示詞會根據哪個應用程式專案使用程式代碼來啟用或停用程式碼區段,而此程式代碼是由圖表中的彩色平臺方塊所建議。

共享專案本身不會進行編譯,它純粹會以原始程式碼檔案群組的形式存在,而原始碼檔案可以包含在其他專案中。 由另一個項目參考時,程式代碼會有效地編譯為 該專案的一部分 。 共用項目無法參考任何其他項目類型(包括其他共享專案)。

請注意,Android 應用程式專案無法參考其他 Android 應用程式專案,例如,Android 單元測試專案無法參考 Android 應用程式專案。 如需共用專案的詳細資訊

Visual Studio for Mac 逐步解說

本節將逐步解說如何使用 Visual Studio for Mac 建立和使用共享專案。 如需完整的範例,請參閱 <共用專案範例>一節。

建立共享專案

若要建立新的共享專案,請流覽至 [檔案 > 新方案...] (或以滑鼠右鍵按鍵按兩下現有的方案,然後選擇 [ 新增 > 專案...]):

New Shared Project

在下一個畫面上,選擇專案名稱,然後按兩下 [ 建立]。

以下顯示新的共享專案 - 請注意沒有參考或元件節點;共用專案不支援這些專案。

Empty Shared Project

若要讓共享專案很有用,至少必須參考一個可建置的專案(例如 iOS 或 Android 應用程式或連結庫,或 PCL 專案)。 共用項目在沒有任何參考專案時不會進行編譯,因此語法(或任何其他)錯誤將不會反白顯示,直到其他專案參考為止。

將參考新增至共享專案的方式與參考一般連結庫專案的方式相同。 此螢幕快照顯示參考共享專案的 Xamarin.iOS 專案。

Project reference to Shared Project

另一個連結庫或應用程式參考共用項目之後,您可以建置方案,並檢視程序代碼中的任何錯誤。 當兩個或多個其他專案參考共享專案時,原始程式碼編輯器左上角會出現一個功能表,其中顯示哪些專案參考這個檔案。

共用項目選項

當您以滑鼠右鍵按兩下 [共享專案] 並選擇 [ 選項 ],設定比其他項目類型少。 因為共享專案不會自行編譯,所以您無法設定輸出或編譯程式選項、項目組態、元件簽署或自定義命令。 共用專案中的程式代碼實際上會從參考這些值的任何值繼承這些值。

[ 選項 ] 畫面如下所示 - [項目 名稱 ] 和 [預設命名空間 ] 是您通常會變更的唯一兩個設定。

Shared Project Options

共用專案範例

Tasky 範例會使用共用專案來包含 iOS、Android 和 Windows 電話 應用程式所使用的通用程式代碼。 SQLite.csTaskRepository.cs 原始碼檔案都會使用編譯程式指示詞 (例如#if __ANDROID__), 為每個參考它們的應用程式產生不同的輸出。

完整的解決方案結構如下所示(分別在 Visual Studio for Mac 和 Visual Studio 中):

Windows 電話 專案可以從 Visual Studio for Mac 內巡覽,即使 Visual Studio for Mac 中不支援編譯該專案類型。

執行中的應用程式如下所示:

iOS, Android, Windows Phone examples

摘要

本文件說明共用項目的運作方式、如何在Visual Studio for Mac和Visual Studio中建立及使用,並引進了示範共用項目運作方式的簡單範例應用程式。