İzlenecek yol: Tasarım Aracı kullanarak ClickOnce dağıtım API'siyle uydu derlemelerini isteğe bağlı olarak indirme
Windows Forms uygulamaları, uydu derlemeleri kullanılarak birden çok kültür için yapılandırılabilir. Uydu derlemesi , uygulamanın varsayılan kültürü dışındaki bir kültür için uygulama kaynaklarını içeren bir derlemedir.
ClickOnce Uygulamalarını Yerelleştirme bölümünde açıklandığı gibi, aynı ClickOnce dağıtımındaki birden çok kültür için birden çok uydu derlemesi ekleyebilirsiniz. Varsayılan olarak, ClickOnce dağıtımınızdaki tüm uydu derlemelerini istemci makinesine indirir, ancak tek bir istemci muhtemelen yalnızca bir uydu derlemesi gerektirir.
Bu izlenecek yol, uydu derlemelerinizi isteğe bağlı olarak işaretlemeyi ve yalnızca istemci makinesinin geçerli kültür ayarları için ihtiyaç duyduğu derlemeyi indirmeyi gösterir.
Not
ApplicationDeployment Ad alanı içindeki System.Deployment.Application sınıf ve API'ler .NET Core ve .NET 5 ve sonraki sürümlerde desteklenmez. .NET 7'de, uygulama dağıtım özelliklerine erişmek için yeni bir yöntem desteklenir. Daha fazla bilgi için bkz . .NET'te ClickOnce dağıtım özelliklerine erişme. .NET 7, ApplicationDeployment yöntemlerinin eşdeğerini desteklemez.
Not
Test amacıyla, aşağıdaki kod örnekleri program aracılığıyla kültürü olarak ja-JP
ayarlar. Bu kodu üretim ortamı için ayarlama hakkında bilgi için bu konunun devamında yer alan "Sonraki Adımlar" bölümüne bakın.
Uydu derlemelerini isteğe bağlı olarak işaretlemek için
Projenizi derleyin. Bu, yerelleştirdiğiniz tüm kültürler için uydu derlemeleri oluşturur.
Çözüm Gezgini'da proje adınıza sağ tıklayın ve Özellikler'e tıklayın.
Yayımla sekmesine ve ardından Uygulama Dosyaları'na tıklayın.
Uydu derlemelerini görüntülemek için Tüm dosyaları göster onay kutusunu seçin. Varsayılan olarak, tüm uydu derlemeleri dağıtımınıza eklenir ve bu iletişim kutusunda görünür.
Uydu derlemesinin isoCode>\ApplicationName.resources.dll biçiminde <bir adı olacaktır; burada <isoCode> RFC 1766 biçiminde bir dil tanımlayıcısıdır.
Her dil tanımlayıcısı için İndirme Grubu listesinde Yeni'ye tıklayın. İndirme grubu adı istendiğinde dil tanımlayıcısını girin. Örneğin, japon uydu derlemesi için indirme grubu adını
ja-JP
belirtmeniz gerekir.Uygulama Dosyaları iletişim kutusunu kapatın.
C'de isteğe bağlı uydu derlemelerini indirmek için#
Program.cs dosyasını açın. Bu dosyayı Çözüm Gezgini'de görmüyorsanız projenizi seçin ve Proje menüsünde Tüm Dosyaları Göster'e tıklayın.
Uygun uydu derlemesini indirmek ve uygulamanızı başlatmak için aşağıdaki kodu kullanın.
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 this error to the user, because a satellite // assembly may not exist if the user's culture and the application's // default culture match. } } } } } }
Visual Basic'te uydu derlemelerini isteğe bağlı olarak indirmek için
Uygulamanın Özellikler penceresinde Uygulama sekmesine tıklayın.
Sekme sayfasının alt kısmında Uygulama Olaylarını Görüntüle'ye tıklayın.
aşağıdaki içeri aktarmaları ApplicationEvents.VB dosyasının başına ekleyin.
Imports System.Deployment.Application Imports System.Globalization Imports System.Threading
Aşağıdaki kodu
MyApplication
sınıfına ekleyin.Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup Thread.CurrentThread.CurrentUICulture = New CultureInfo("ja-JP") GetSatelliteAssemblies(Thread.CurrentThread.CurrentUICulture.ToString()) End Sub Private Shared Sub GetSatelliteAssemblies(ByVal groupName As String) If (ApplicationDeployment.IsNetworkDeployed) Then Dim deploy As ApplicationDeployment = ApplicationDeployment.CurrentDeployment If (deploy.IsFirstRun) Then Try deploy.DownloadFileGroup(groupName) Catch de As DeploymentException ' Log error. Do not report this error to the user, because a satellite ' assembly may not exist if the user's culture and the application's ' default culture match. End Try End If End If End Sub
Sonraki adımlar
Bir üretim ortamında, istemci makineleri varsayılan olarak doğru değer ayarlanacağından, belirli bir değere ayarlayan CurrentUICulture kod örneklerindeki satırı kaldırmanız gerekebilir. Örneğin, uygulamanız bir Japon istemci makinesinde çalıştırıldığında varsayılan CurrentUICulture olarak olacaktır ja-JP
. Program aracılığıyla ayarlamak, uygulamanızı dağıtmadan önce uydu derlemelerinizi test etmenin iyi bir yoludur.