透過使用附屬組件,Windows Forms 應用程式可以設定為適用多個文化特性。 「附屬組件」 (Satellite Assembly) 為包含文化特性 (除了應用程式的預設文化特性以外) 之應用程式資源的組件。
如當地語系化 ClickOnce 應用程式中所述,您可以在相同的 ClickOnce 部署中包含多個附屬組件,以因應多個文化特性。 儘管單一用戶可能只需要一個附屬組件,但 ClickOnce 預設會將您部署中所有的附屬組件下載到用戶端電腦。
本逐步解說示範如何標示您的附屬組件為選擇性,並僅下載用戶端電腦目前文化特性所需要的附屬組件。 下列程序使用 Windows 軟體開發套件 (SDK) 中可用的工具。 您也可以在 Visual Studio 中執行這項工作。 另請參閱逐步解說:使用設計工具依 ClickOnce 部署 API 的要求下載附屬組件,或逐步解說:使用設計工具依 ClickOnce 部署 API 的要求下載附屬組件。
注意
.NET Core 和 .NET 5 和更新版本中不支援 System.Deployment.Application 命名空間中的 ApplicationDeployment 類別和 API。 .NET 7 支援存取應用程式部署屬性的新方法。 如需詳細資訊,請參閱在 .NET 中存取 ClickOnce 部署屬性。 .NET 7 不支援 ApplicationDeployment 方法的同等項。
注意
為了測試用途,下列程式碼範例以程式設計的方式設定文化特性為 ja-JP
。 如需為生產環境調整程式碼的相關資訊,請參閱本主題<後續步驟>一節。
必要條件
本主題假設您知道如何使用 Visual Studio 將當地語系化的資源新增至您的應用程式。 如需詳細指示,請參閱逐步解說:當地語系化 Windows Forms。
隨需下載附屬組件
將下列程式碼加入您的應用程式,以便能夠隨需下載附屬組件。
using System; using System.Collections.Generic; using System.Windows.Forms; using System.Threading; using System.Globalization; using System.Deployment.Application; using System.Reflection; namespace ClickOnce.SatelliteAssemblies { static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Thread.CurrentThread.CurrentUICulture = new CultureInfo("ja-JP"); // Call this before initializing the main form, which will cause the resource manager // to look for the appropriate satellite assembly. GetSatelliteAssemblies(Thread.CurrentThread.CurrentCulture.ToString()); Application.Run(new Form1()); } static void GetSatelliteAssemblies(string groupName) { if (ApplicationDeployment.IsNetworkDeployed) { ApplicationDeployment deploy = ApplicationDeployment.CurrentDeployment; if (deploy.IsFirstRun) { try { deploy.DownloadFileGroup(groupName); } catch (DeploymentException de) { // Log error. Do not report error to the user, as there may not be a satellite // assembly if the user's culture and the application's default culture match. } } } } } }
使用 Resgen.exe (資源檔產生器) 或 Visual Studio,為應用程式產生附屬組件。
使用 MageUI.exe 產生應用程式資訊清單,或開啟現有的應用程式資訊清單。 如需有關這項工具的詳細資訊,請參閱 < MageUI.exe (圖形用戶端、資訊清單產生和編輯工具)。
按一下 [檔案] 索引標籤。
按一下省略符號按鈕 (...),然後選取所有應用程式之附屬組件與檔案的所在目錄,包括您使用 Resgen.exe 產生的附屬組件 (附屬組件的名稱形式為 <isoCode>\ApplicationName.resources.dll;其中 <isoCode> 是 RFC 1766 格式的語言識別碼。)
按一下 [填入] 將檔案加入您的部署。
選取每個附屬組件的 [選擇性] 核取方塊。
設定群組欄位到每個附屬組件的 ISO 語言識別項。 以日文的附屬組件為例,您會將下載群組名稱指定為
ja-JP
取得。 這可讓您在步驟 1 加入的程式碼,根據使用者之 CurrentUICulture 屬性設定,下載適合的附屬組件。
下一步
在生產環境中,因為用戶端電腦上會有正確的預設值,所以您可能需要移除行程式碼範例中,將 CurrentUICulture 設定為特定值的行。 當您的應用程式在日文的用戶端電腦上執行時, CurrentUICulture 預設會是 ja-JP
。 在部署您的應用程式之前,以程式設計方式設定這個值以測試附屬組件,是個好方法。