逐步解說:建立 Managed 附屬 DLL
更新:2007 年 11 月
如果要將資源檔 (例如圖示、點陣圖和資源字串) 儲存於集中式的位置以供在增益集和其他 Automation 專案中使用,附屬 DLL 會非常好用。附屬 DLL 可由其他專案或增益集重複使用。此外,將字串和增益集的其他資源區分開來,可更容易的做出集中式變更,或將資源當地語系化為不同的語言。
Visual Studio .NET 2002 和 Visual Studio .NET 2003 是使用 "SatelliteDllPath" 和 "SatelliteDllName" 的登錄項目。不過,在 Visual Studio 2005 中,登錄項目已由 .Addin 登錄檔案中的項目所取代。當您的專案需要資源而要載入增益集時,Visual Studio 會查詢增益集的附屬 DLL,就像其他 Managed 元件一樣。因此,硬式編碼資源路徑是不需要的。同時,不要使用 #id 方法指定資源 ID,而是使用 @<resource name> (此處的 "<resource name> 是您資源的名稱,例如 @Icon1 或 @String1),@ 符號表示應該在附屬 DLL 中尋找資源的 Visual Studio。
建立 Managed 附屬 DLL
下列程序示範如何建立包含圖示和字串資源的附屬 DLL,以及如何將增益集改變為存取那些資源。它會使用增益集,此增益集具有需要圖示和字串資源的 [關於對話方塊]。通常,如果您建立具有 [關於對話方塊] 的增益集,系統會提供預設的圖示和文字。下列程序示範了如何使用您選擇的圖示和文字取代預設的圖示和文字。
若要建立 Managed 附屬 DLL
在 [檔案] 功能表上指向 [新增],然後按一下 [專案]。
[新增專案] 對話方塊隨即開啟。
展開 [其他專案類型],然後選取 [擴充性專案]。
在 [範本] 窗格中選取 [Visual Studio 增益集]。
依照 [Visual Studio 增益集精靈] 的指示進行。在 [[關於] 對話方塊資訊選擇] 頁面中,核取 [是,我希望增益集可以提供 [關於] 對話方塊資訊] 核取方塊。接受其餘的預設選擇。
在 [方案總管] 中,選取 [專案] 功能表上的增益集專案,再按一下 [顯示所有檔案]。
在 [專案] 功能表上,按一下 [加入參考]。
在 [.NET] 索引標籤上按一下 [System.Drawing],然後按一下 [確定]。
以滑鼠右鍵按一下 [方案總管] 中的增益集專案。
指向 [加入],並且按一下 [新增項目]。
選取 [範本] 清單中的 [資源檔],按一下 [加入] 按鈕。保留它的預設名稱 (Resources1.resx)。
這會啟動 Visual Studio [資源編輯器]。
根據預設,這會建立名為 Resource1.resx 的資源檔。
在 Resource1.resx 中,從頂端的 [字串] 下拉式清單中選取 [圖示] (頂端最左邊的按鈕)。
在 [加入參考] 下拉式清單中按一下 [加入新圖示]。現在暫時保留它的預設名稱 (Icon1.bmp) 並按一下 [加入]。
此外,您可以為圖示選取現有的點陣圖影像,只要該影像為 16 x 16 像素且為 16 色或全彩。增益集的自訂圖示必須是 16 x 16 像素,且為 16 色或全彩。
在 [圖示編輯器] 中開啟圖示之後,請使用工具來改變它。當您完成時,請關閉 [圖示編輯器] 並儲存變更。
從 [加入資源] 下拉式清單選取 [加入新字串]。
按一下 [名稱] 欄中的第一個方塊。
這會建立名為 String1 的新預設字串資源。
在 [值] 方塊中輸入 Line one。
這是第一個字串資源的值。
再多建立兩個字串資源,將它們命名為 "Line two" 和 "Line three"。
關閉 [資源編輯器] 並儲存變更。
在 [方案總管] 中,以滑鼠右鍵按一下 Resource1.resx,然後選取 [屬性]。
在 [屬性] 視窗中,將 [建置動作] 從 [內嵌資源] 變更為 [無]。
這會避免資源建置至增益集組件。
建置專案。
建立附屬資源 DLL。這可以用兩個步驟的處理序來完成,方法是先使用 ResGen,然後使用 AL (組件連結器) 來建置附屬 DLL。
按一下 Windows [開始] 按鈕,依序指向 [所有程式]、[Microsoft Visual Studio 2005]、[Visual Studio 工具],然後按一下 [Microsoft Visual Studio 2005 命令提示字元]。
這會設定某些環境變數,讓您可以更容易參考 Visual Studio 工具。
在命令提示字元中,移至包含 .resx 檔的資料夾,然後輸入 Resgen Resource1.resx。
Resgen 是將指定的 .resx 檔編譯為 .resources 檔的公用程式。如需詳細資訊,請參閱資源檔產生器 (Resgen.exe)。
在命令提示字元中再次輸入下列文字:Al.exe /embed:Resource1.resources /culture:en-US /out:<Add-In Name>.resources.dll。
以您的增益集名稱取代 <Add-In Name>。例如,如果您的增益集專案名為 MyAddin,則 /out: 參數應該是 /out:MyAddin.resources.dll。/out: 名稱應該符合您的專案名稱,否則將會找不到資源 DLL。
組件連結器 (Al.exe) 會將指定的 .resources 檔轉換成您可在增益集中參考的 DLL (您可以將 /culture 參數變更為英文以外的其他語言)。如需詳細資訊,請參閱組件連結器 (Al.exe)。
使用 [Windows 檔案總管] 瀏覽至增益集的 DLL 目錄,並建立名為 en-US (這是適用於美式英文,因為您在 Al 中輸入 en-US 做為文化特性值) 的資料夾。
將 <Add-In Name>.resources.dll 檔複製至新的 en-US 資料夾。
使用 [Windows 檔案總管] 瀏覽至 Addins 目錄。通常為 <drive>:\Documents and Settings\<user name>\My Documents\Visual Studio 2005\Addins。
藉由執行下列動作,修改 Visual Studio 增益集定義檔案:
以滑鼠右鍵按一下您增益集的增益集定義檔案,然後從快速鍵功能表選取 [開啟方式]。從程式清單中選取 [Note Pad]。
在 <Addin></Addin> 索引標籤內部,進行下列修改:
<Addin> <FriendlyName>@String1</FriendlyName> <Description>@String2</Description> <AboutBoxDetails>@String3</AboutBoxDetails> <AboutIconData>@Icon1</AboutIconData> <Assembly><installation root>\my documents\visual studio 2005\Projects\MyAddin1\MyAddin1\bin\MyAddin1.dll</Assembly> <FullClassName>MyAddin1.Connect</FullClassName> <LoadBehavior>0</LoadBehavior> <CommandPreload>0</CommandPreload> <CommandLineSafe>0</CommandLineSafe> </Addin>
以該檔案在你電腦上的路徑取代 <Assembly></Assembly> 索引標籤內部的 <installation root>。
Friendlyname 項目會將您的增益集重新命名為 Line1,這是您在 Resource1.resx 檔中為 String1 所輸入的名稱。在 [關於] 對話方塊中的描述現在會包含 "Line2",而 AboutIconData 項目會讓 [關於] 對話方塊中的圖示與您在步驟七 (7) 中所建立的圖示相符。
重新建置專案,並選取 [增益集管理員] 中的增益集。
在 [說明] 功能表上按一下 [關於 Microsoft Visual Studio] 命令,並在清單中選取 [Line1] (您的增益集名稱)。
您會看見新的自訂圖示,以及在 [關於對話方塊] 中建立的三個字串。