Aracılığıyla paylaş


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

  1. Makro Gezgini'ni açmak için, Araçlar menüsünde Makrolar'ın üzerine gelin ve Makro Gezgini'ne tıklayın.

  2. 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.

  3. 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).

  4. 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
    
  5. Makrolar IDE'sini kapatın. Odak Visual Studio'ya döner.

Belirli bir yerel ayar için proje yayımlamak için

  1. Visual Basic Windows Uygulaması projesi oluşturmak için, Dosya menüsünde Yeni'nin üzerine gelin ve Proje'ye tıklayın.

  2. Yeni Proje iletişim kutusunda Visual Basic düğümünden Windows Uygulaması'nı seçin. Projeye PublishLocales adını verin.

  3. 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.

  4. 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/PublishLocalesbelirtin 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.)

  5. 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

  6. 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.

  7. 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.)