可攜式類別庫
更新:2011 年 5 月
可攜式類別庫專案可讓您撰寫及建置可在一個以上 .NET Framework 平台上工作的 Managed 組件。 您可以建立類別,使其包含您想在多個專案共用的程式碼 (例如共用商務邏輯),然後從不同的專案類型參考這些類別。
當您使用可攜式類別庫專案時,可以建置不需要在 .NET Framework、Silverlight、Windows Phone 7 或 Xbox 360 平台上修改就可以運作的可攜式組件。 如果沒有可攜式類別庫專案,您就必須鎖定單一平台,然後手動為其他平台重新建立類別庫。 可攜式類別庫專案支援這些平台中的組件子集,而且會提供 Visual Studio 範本,讓您建置不需要在這些平台上修改就可以執行的組件。
必要條件
若要建立可攜式類別庫專案,您必須依照下列順序安裝這些元件:
組件
下列組件可在可攜式類別庫專案內使用:
mscorlib.dll
System.dll
System.Core.dll
System.Xml.dll
System.ComponentModel.Composition.dll
System.Net.dll
System.Runtime.Serialization.dll
System.ServiceModel.dll
System.Xml.Serialization.dll
System.Windows.dll (來自 Silverlight)
但是,並非所有組件都可在所有平台上受到支援。 在可攜式類別庫專案中,您會指定您想要鎖定的平台,而且只有這些平台的支援組件才會在您的專案中參考。 如果您嘗試參考的組件在您鎖定的平台上不受支援,Visual Studio 會警告您不相容的情況。 所有平台上都支援核心組件 (mscorlib.dll、System.dll、System.Core.dll 和 System.Xml.dll)。
下表顯示可用的平台上支援哪些組件。
功能 |
組件 |
.NET Framework 4 |
Silverlight |
Windows Phone 7 |
Xbox 360 |
---|---|---|---|---|---|
核心 |
mscorlib.dll、System.dll、System.Core.dll、System.Xml.dll |
有 |
有 |
有 |
有 |
Managed Extensibility Framework (MEF) |
System.ComponentModel.Composition.dll |
有 |
有 |
沒有 |
沒有 |
Network Class Library (NCL) |
System.Net.dll |
有 |
有 |
有 |
沒有 |
序列化 |
System.Runtime.Serialization.dll |
有 |
有 |
有 |
沒有 |
Windows Communication Foundation (WCF) |
System.ServiceModel.dll |
有 |
有 |
有 |
沒有 |
XML 序列化 |
System.Xml.Serialization.dll |
有 |
有 |
有 |
沒有 |
檢視模型支援 |
System.Windows.dll (來自 Silverlight) |
沒有 |
有 |
有 |
沒有 |
可攜式類別庫專案會鎖定各種平台的組合。 下表顯示平台組合所支援的功能。
平台 |
支援 |
---|---|
Silverlight 和 Windows Phone 7 |
MEF 以外的所有項目 |
.NET Framework 4 和 Silverlight |
檢視模型支援以外的所有項目 |
.NET Framework 4 和 Windows Phone 7 |
檢視模型支援和 MEF 以外的所有項目 |
.NET Framework 4、Silverlight 和 Windows Phone 7 |
檢視模型支援和 MEF 以外的所有項目 |
Xbox 360 和其他任何平台 |
僅限 Core |
在參考文件中尋找支援的成員
您可以在 .NET Framework 類別庫的參考主題中尋找 可攜式類別庫專案所支援的成員。 在類別的成員表格中,下列可攜式類別庫圖示會出現在支援的成員旁邊。
您也可以查看參考主題的 [版本資訊] 一節找出一則注意事項,指示在可攜式類別庫專案中支援型別或成員。
支援檢視模型模式
如果您是以 Silverlight 和 Windows Phone 7 為目標,就可以在您的方案中實作檢視模型模式。 實作這個模式的類別位於 Silverlight 的 System.Windows.dll 組件中。 如果您建立以 .NET Framework 4 或 Xbox 360 為目標的可攜式類別庫專案,則不支援 System.Windows.dll 組件。
這個組件中的類別包括下列各項:
System.Collections.ObjectModel.ReadOnlyObservableCollection<T>
System.Collections.Specialized.NotifyCollectionChangedAction
System.Collections.Specialized.NotifyCollectionChangedEventArgs
System.Collections.Specialized.NotifyCollectionChangedEventHandler
.NET Framework 4 也包含這些類別,不過這些類別會在 System.Windows.dll 以外的組件中實作。 若要搭配可攜式類別庫專案使用這些類別,您必須參考 System.Windows.dll,而不是 .NET Framework 4 文件中列出的組件。
建立可攜式類別庫專案
若要建立可攜式類別庫專案,您會在 Visual Studio 2010 中建立新的專案,然後選取 Visual C# 或 Visual Basic 底下的 [可攜式類別庫] 範本。 如果您未看到此範本,請確定您已經安裝可攜式程式庫工具 (英文)。
選取鎖定的平台
依預設,可攜式類別庫專案會鎖定下列平台:
.NET Framework 4
Silverlight 4
Silverlight for Windows Phone 7
此專案只會參考這些平台所支援的組件。 若要選取鎖定的平台,請在 [方案總管] 中以滑鼠右鍵按一下可攜式類別庫專案名稱,然後選取 [屬性]。
專案屬性頁會指定目前鎖定的平台。
若要新增或移除目標平台,請按一下 [變更]。
當您變更目標平台時,專案中所參考的組件將會變更,以符合您的選擇平台所支援的組件集合。 如果您選取的其中一個平台不支援您的專案所參考的組件,您必須移除此組件的參考,或是變更目標平台。 在 [方案總管] 中,不支援的組件會以驚嘆號 (!) 標示。 下圖顯示當 Xbox 360 平台加入至目標平台時,不支援的組件會出現警告。
使用可攜式類別庫
在您建置可攜式類別庫專案之後,請從依賴可攜式類別庫專案的其他專案加入其參考。 您可以參考此專案,或是包含您想要存取之類別的特定組件。
建立相依性
若要執行可攜式類別庫應用程式,您的電腦上必須安裝 .NET Framework 4 的更新。 這項更新會隨著 Visual Studio 2010 SP1 自動安裝,所以您可以執行可攜式類別庫應用程式,而不需在您用來開發應用程式的電腦上進一步修改。 若要在另一部電腦上執行應用程式,您可以手動安裝更新 (英文)。
當您部署參考可攜式類別庫組件的 .NET Framework 4 應用程式時,您必須指定與 .NET Framework 4 更新的相依性。 藉由指定此相依性,您就可以確保此更新會與您的應用程式一起安裝。
若要建立與 ClickOnce 部署的相依性:在 [方案總管] 中,按一下您想要發行之專案的專案節點 (這是參考可攜式類別庫專案的專案)。按一下 [專案] 功能表上的 [屬性],然後按一下 [發行] 索引標籤。 在 [發行] 頁中,按一下 [必要條件]。 選取 .NET Framework 4 更新當做必要條件。
若要建立與安裝專案的相依性:在 [方案總管] 中,按一下安裝專案。 按一下 [專案] 功能表上的 [屬性],然後按一下 [必要條件]。 選取 .NET Framework 4 更新當做必要條件。
如需部署 .NET Framework 應用程式的詳細資訊,請參閱.NET Framework 開發人員部署手冊。
使用 Silverlight 部署
當您使用 Silverlight 架構應用程式部署可攜式類別庫組件時,您必須確定此應用程式所需的最低執行階段版本設定為 4.0.60129.0 或更新的版本。 如果要設定 minRuntimeVersion 參數值,請將 <param name="minRuntimeVersion" value="4.0.60129.0" /> 併入裝載 Silverlight 架構應用程式的網頁。
<div id="silverlightControlHost">
<object data="data:application/x-silverlight-2,"
type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/SilverlightApplication.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.60129.0" />
<param name="autoUpgrade" value="true" />
<a href="https://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0"
style="text-decoration:none">
<img src=https://go.microsoft.com/fwlink/?LinkId=161376
alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object>
<iframe id="_sl_historyFrame"
style="visibility:hidden;height:0px;width:0px;border:0px">
</iframe>
</div>
可攜式類別庫中的 API 差異
為了讓可攜式類別庫組件在所有支援的平台上都相容,可攜式類別庫中已稍微變更某些成員。 如需已變更哪些成員以及其變更方式的詳細資訊,請參閱可攜式類別庫的 API 差異。
請參閱
其他資源
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2011 年 5 月 |
已加入支援檢視模型模式和建立相依性的相關資訊。 |
資訊加強。 |
2011 年 3 月 |
加入主題。 |
資訊加強。 |