Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложения 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. Установка этого значения программным способом — это хороший способ протестировать спутниковые сборки перед развертыванием приложения.