可攜式類別庫

更新:2011 年 5 月

可攜式類別庫專案可讓您撰寫及建置可在一個以上 .NET Framework 平台上工作的 Managed 組件。 您可以建立類別,使其包含您想在多個專案共用的程式碼 (例如共用商務邏輯),然後從不同的專案類型參考這些類別。

當您使用可攜式類別庫專案時,可以建置不需要在 .NET Framework、Silverlight、Windows Phone 7 或 Xbox 360 平台上修改就可以運作的可攜式組件。 如果沒有可攜式類別庫專案,您就必須鎖定單一平台,然後手動為其他平台重新建立類別庫。 可攜式類別庫專案支援這些平台中的組件子集,而且會提供 Visual Studio 範本,讓您建置不需要在這些平台上修改就可以執行的組件。

必要條件

若要建立可攜式類別庫專案,您必須依照下列順序安裝這些元件:

  1. Visual Studio 2010 Service Pack 1 (SP1) (英文)

  2. 可攜式程式庫工具 (英文)

組件

下列組件可在可攜式類別庫專案內使用:

  • 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 組件。

這個組件中的類別包括下列各項:

.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 差異

請參閱

其他資源

可攜式類別庫的 API 差異

變更記錄

日期

記錄

原因

2011 年 5 月

已加入支援檢視模型模式和建立相依性的相關資訊。

資訊加強。

2011 年 3 月

加入主題。

資訊加強。