Пошаговое руководство. Скачивание вспомогательных сборок по запросу с помощью API развертывания ClickOnce
Приложения Windows Forms можно настроить для нескольких языков и региональных параметров, воспользовавшись вспомогательными сборками. Вспомогательная сборка — это сборка, содержащая ресурсы приложения для языка, отличного от языка и региональных параметров приложения по умолчанию.
Как описано в приложениях Localize ClickOnce, можно включить несколько вспомогательных сборок для нескольких региональных параметров в одном развертывании ClickOnce. По умолчанию ClickOnce скачивает все вспомогательные сборки в развертывании на клиентский компьютер, хотя для одного клиента, вероятно, потребуется только одна спутниковая сборка.
Это пошаговое руководство показывает, как пометить вспомогательные сборки как необязательные и загрузить только сборку, необходимую клиентскому компьютеру для текущих настроек языка и региональных параметров. В следующей процедуре используются средства, доступные в пакете СРЕДСТВ разработки программного обеспечения Windows (SDK). Эту задачу также можно выполнить в Visual Studio. См. также пошаговое руководство. Скачивание вспомогательных сборок по запросу с помощью API развертывания ClickOnce с помощью конструктора или пошагового руководства. Скачивание вспомогательных сборок по запросу с помощью API развертывания ClickOnce с помощью конструктора.
Примечание.
Класс ApplicationDeployment и API в System.Deployment.Application пространстве имен не поддерживаются в .NET Core и .NET 5 и более поздних версиях. В .NET 7 поддерживается новый метод доступа к свойствам развертывания приложения. Дополнительные сведения см. в разделе "Свойства развертывания Access ClickOnce" в .NET. .NET 7 не поддерживает эквивалент методов ApplicationDeployment.
Примечание.
В целях тестирования в следующем примере кода программным образом задается следующий язык и региональные параметры: ja-JP
. В подразделе «Дальнейшие действия» далее в этом разделе приводятся сведения о том, как настроить этот код для производственной среды.
Необходимые компоненты
Составители этого раздела исходили из того, что вы знаете, как добавить локализованные ресурсы в свое приложение с использованием Visual Studio. Подробные инструкции см. в пошаговом руководстве по локализации Форм Windows.
Загрузка вспомогательных сборок по требованию
Добавьте следующий код в приложение, чтобы включить загрузку вспомогательных сборок по требованию.
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
. Программная установка этого значения — хороший способ проверить вспомогательные сборки перед развертыванием приложения.