Belirli bir yerel ayara sahip bir proje yayımlama
Bir uygulamanın farklı yerel ayarlara sahip bileşenler içermesi sık karşılaşılan bir durum değildir. Bu senaryoda, birkaç projesi olan bir çözüm oluşturup her yerel ayar için ayrı projeler yayımlayabilirsiniz. Bu yordam, 'en' yerel ayarını kullanarak bir çözümdeki ilk projeyi yayımlamak için makronun nasıl kullanılacağını gösterir. Bu yordamı 'en' dışında bir yerel ayar ile denemek istiyorsanız, makroda kullanmakta olduğunuz yerel ayarla (örneğin, 'de' veya 'de-DE') eşleşecek şekilde ayarladığınızdan localeString
emin olun.
Not
Bu makroyu kullandığınızda Yayımlama Konumu geçerli bir URL veya Evrensel Adlandırma Kuralı (UNC) paylaşımı olmalıdır. Ayrıca, bilgisayarınızda Internet Information Services'ın (IIS) yüklü olması gerekir. IIS'yi yüklemek için Başlat menüsünde Denetim Masası'e tıklayın. Program Ekle veya Kaldır'a çift tıklayın. Program Ekle veya Kaldır'da Windows Bileşenleri Ekle/Kaldır'a tıklayın. Windows Bileşenleri Sihirbazı'nda, Bileşenler listesinde Internet Information Services (IIS) onay kutusunu seçin. Ardından sihirbazı kapatmak için Son'a tıklayın.
Yayımlama makrosunun oluşturulması için
Makro Gezgini'ni açmak için, Araçlar menüsünde Makrolar'ın üzerine gelin ve Makro Gezgini'ne tıklayın.
Yeni bir makro modülü oluşturun. Makro Gezgini'nde MyMacros'ı seçin. Araçlar menüsünde Makrolar'ın üzerine gelin ve Yeni Makro Modülü'ne tıklayın. Modülü PublishSpecificCulture olarak adlandırın.
Makro Gezgini'nde MyMacros düğümünü genişletin ve ardından PublishAllProjects modülünü çift tıklayarak açın (veya Araçlar menüsünden Makrolar'ın üzerine gelin ve Makrolar IDE'ye tıklayın).
Makrolar IDE'sinde, deyimlerinden sonra modüle
Import
aşağıdaki kodu ekleyin:Module PublishSpecificCulture Sub PublishProjectFirstProjectWithEnLocale() ' Note: You should publish projects by using the IDE at least once ' before you use this macro. Items such as the certificate and the ' security zone must be set. Dim localeString As String = "en" ' Get first project. Dim proj As Project = DTE.Solution.Projects.Item(1) Dim publishProperties As Object = proj.Properties.Item("Publish").Value ' GenerateManifests and SignManifests must always be set to ' True for publishing to work. proj.Properties.Item("GenerateManifests").Value = True proj.Properties.Item("SignManifests").Value = True 'Set the publish language. 'This will set the deployment language and pick up all ' en resource dlls: Dim originalTargetCulture As String = _ publishProperties.Item("TargetCulture").Value publishProperties.Item("TargetCulture").Value = localeString 'Append 'en' to end of publish, install, and update URLs if needed: Dim originalPublishUrl As String = _ publishProperties.Item("PublishUrl").Value Dim originalInstallUrl As String = _ publishProperties.Item("InstallUrl").Value Dim originalUpdateUrl As String = _ publishProperties.Item("UpdateUrl").Value publishProperties.Item("PublishUrl").Value = _ AppendStringToUrl(localeString, New Uri(originalPublishUrl)) If originalInstallUrl <> String.Empty Then publishProperties.Item("InstallUrl").Value = _ AppendStringToUrl(localeString, New Uri(originalInstallUrl)) End If If originalUpdateUrl <> String.Empty Then publishProperties.Item("UpdateUrl").Value = _ AppendStringToUrl(localeString, New Uri(originalUpdateUrl)) End If proj.Save() Dim slnbld2 As SolutionBuild2 = _ CType(DTE.Solution.SolutionBuild, SolutionBuild2) slnbld2.Clean(True) slnbld2.BuildProject( _ proj.ConfigurationManager.ActiveConfiguration.ConfigurationName, _ proj.UniqueName, True) ' Only publish if build is successful. If slnbld2.LastBuildInfo <> 0 Then MsgBox("Build failed for " & proj.UniqueName) Else slnbld2.PublishProject( _ proj.ConfigurationManager.ActiveConfiguration.ConfigurationName, _ proj.UniqueName, True) If slnbld2.LastPublishInfo = 0 Then MsgBox("Publish succeeded for " & proj.UniqueName _ & vbCrLf & "." _ & " Publish Language was '" & localeString & "'.") Else MsgBox("Publish failed for " & proj.UniqueName) End If End If ' Return URLs and target culture to their previous state. publishProperties.Item("PublishUrl").Value = originalPublishUrl publishProperties.Item("InstallUrl").Value = originalInstallUrl publishProperties.Item("UpdateUrl").Value = originalUpdateUrl publishProperties.Item("TargetCulture").Value = originalTargetCulture proj.Save() End Sub Private Function AppendStringToUrl(ByVal str As String, _ ByVal baseUri As Uri) As String Dim returnValue As String = baseUri.OriginalString If baseUri.IsFile OrElse baseUri.IsUnc Then returnValue = IO.Path.Combine(baseUri.OriginalString, str) Else If Not baseUri.ToString.EndsWith("/") Then returnValue = baseUri.OriginalString & "/" & str Else returnValue = baseUri.OriginalString & str End If End If Return returnValue End Function End Module
Makrolar IDE'sini kapatın. Odak Visual Studio'ya döner.
Belirli bir yerel ayar için proje yayımlamak için
Visual Basic Windows Uygulaması projesi oluşturmak için, Dosya menüsünde Yeni'nin üzerine gelin ve Proje'ye tıklayın.
Yeni Proje iletişim kutusunda Visual Basic düğümünden Windows Uygulaması'nı seçin. Projeye PublishLocales adını verin.
Form1'e tıklayın. Özellikler penceresindeki Tasarım'ın altında Language özelliğini (Varsayılan) yerine İngilizce olarak değiştirin. Formun Text özelliğini MyForm olarak değiştirin.
Yerelleştirilmiş kaynak DLL'lerinin gerekli olana kadar oluşturulmadığını unutmayın. Örneğin, yeni yerel ayarı belirttikten sonra formun metnini veya denetimlerinden birini değiştirdiğinizde oluşturulurlar.
Visual Studio IDE kullanarak PublishLocales'i yayımlayın.
Çözüm Gezgini'de PublishLocales'i seçin. Proje menüsünde Özellikler'i seçin. Project Tasarım Aracı Yayımla sayfasında, yayımlama konumunu
http://localhost/PublishLocales
belirtin ve ardından Şimdi Yayımla'ya tıklayın.Yayımlama Web sayfası göründüğünde kapatın. (Bu adım için yalnızca projeyi yayımlamanız gerekir; yüklemeniz gerekmez.)
Visual Studio Komut İstemi penceresinde makroyu çağırarak PublishLocales'i yeniden yayımlayın. Komut İstemi penceresini görüntülemek için, Görünüm menüsünde Diğer Pencereler'in üzerine gelin ve Komut Penceresi'ne tıklayın veya Ctrl+Alt+A tuşlarına basın. Komut İstemi penceresinde yazın
macros
; otomatik tamamlama, kullanılabilir makroların listesini sağlar. Aşağıdaki makroyu seçin ve ENTER tuşuna basın:Macros.MyMacros.PublishSpecificCulture.PublishProjectFirstProjectWithEnLocale
Yayımlama işlemi başarılı olduğunda, "PublishLocales\PublishLocales.vbproj için yayımlama başarılı oldu. Yayımlama dili 'en' idi." İleti kutusunda Tamam'a tıklayın. Yayımlama Web sayfası görüntülendiğinde Yükle'ye tıklayın.
C:\Inetpub\wwwroot\PublishLocales\en dizinine bakın. Yerelleştirilmiş kaynak DLL'sine ek olarak bildirimler, setup.exe ve Web sayfası yayımlama dosyası gibi yüklü dosyaları görmeniz gerekir. (Varsayılan olarak ClickOnce, EXE ve DLL'lere bir
.deploy
uzantı ekler; dağıtımdan sonra bu uzantıyı kaldırabilirsiniz.)