Freigeben über


Gewusst wie: Veröffentlichen eines Projekts mit einem bestimmten Gebietsschema

Es ist nichts Ungewöhnliches, dass eine Anwendung Komponenten mit unterschiedlichen Gebietsschemas enthält. In diesem Fall würden Sie eine Projektmappe mit mehreren Projekten erstellen und dann für jedes Gebietsschema ein eigenes Projekt veröffentlichen. In dieser Vorgehensweise wird beschrieben, wie Sie ein Makro erstellen, um das erste Projekt in einer Projektmappe mit dem Gebietsschema 'en' zu veröffentlichen. Wenn Sie diese Vorgehensweise mit einem anderen Gebietsschema als 'en' ausprobieren möchten, müssen Sie im Makro localeString auf das verwendete Gebietsschema festlegen (z. B. 'de' oder 'de-DE').

Tipp

Bei Verwendung dieses Makros sollte der Veröffentlichungsort eine gültige URL oder eine UNC-Freigabe (Universal Naming Convention) sein. Auch die IIS (Internet Information Services, Internetinformationsdienste) müssen auf dem Computer installiert sein. Klicken Sie zum Installieren von IIS im Menü Start auf Systemsteuerung. Doppelklicken Sie auf Software. Klicken Sie im Fenster Software auf Windows-Komponenten hinzufügen/entfernen. Aktivieren Sie im Assistent für Windows-Komponenten in der Liste Komponenten das Kontrollkästchen Internetinformationsdienste (IIS). Klicken Sie anschließend auf Fertig stellen, um den Assistenten zu schließen.

So erstellen Sie das Veröffentlichungsmakro

  1. Um den Makro-Explorer zu öffnen, zeigen Sie im Menü Extras auf Makros, und klicken Sie dann auf Makro-Explorer.

  2. Erstellen Sie ein neues Makromodul. Wählen Sie im Makro-Explorer MyMacros aus. Zeigen Sie im Menü Extras auf Makros, und klicken Sie dann auf Neues Makromodul. Nennen Sie das Modul PublishSpecificCulture.

  3. Erweitern Sie im Makro-Explorer den Knoten MyMacros, und öffnen Sie dann das Modul PublishAllProjects, indem Sie darauf doppelklicken (oder zeigen Sie im Menü Extras auf Makros, und klicken Sie dann auf Makro-IDE).

  4. Fügen Sie dem Modul in der Makro-IDE den folgenden Code nach den Import-Anweisungen hinzu:

    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 certficate 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. Schließen Sie die Makro-IDE. Dadurch erhält Visual Studio wieder den Fokus.

So veröffentlichen Sie ein Projekt für ein bestimmtes Gebietsschema

  1. Zeigen Sie zum Erstellen eines Windows-Anwendungsprojekts in Visual Basic im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

  2. Wählen Sie im Dialogfeld Neues Projekt die Option Windows-Anwendung aus dem Knoten Visual Basic aus. Nennen Sie das Projekt PublishLocales.

  3. Klicken Sie auf Form1. Ändern Sie im Fenster Eigenschaften unter Entwurf die Eigenschaft Language von (Standard) in English. Ändern Sie die Text-Eigenschaft des Formulars in MyForm.

    Beachten Sie, dass die lokalisierten Ressourcen-DLLs erst dann erstellt werden, wenn sie benötigt werden. Z. B. werden sie erstellt, wenn Sie den Text des Formulars oder eines seiner Steuerelemente ändern, nachdem Sie das neue Gebietsschema angegeben haben.

  4. Veröffentlichen Sie PublishLocales mit der Visual Studio IDE.

    Wählen Sie im Projektmappen-Explorer PublishLocales aus. Wählen Sie im Menü Projekt Eigenschaften aus. Geben Sie im Projekt-Designer auf der Seite Veröffentlichen den Veröffentlichungsort von https://localhost/PublishLocales an, und klicken Sie dann auf Jetzt veröffentlichen.

    Wenn die veröffentlichte Webseite angezeigt wird, schließen Sie sie. (Für diesen Schritt müssen Sie das Projekt lediglich veröffentlichen, nicht installieren.)

  5. Veröffentlichen Sie PublishLocales erneut, indem Sie das Makro im Visual Studio-Eingabeaufforderungsfenster aufrufen. Um das Eingabeaufforderungsfenster aufzurufen, zeigen Sie im Menü Ansicht auf Weitere Fenster, und klicken Sie dann auf Befehlsfenster. Alternativ können Sie auch STRG + ALT + A drücken. Geben Sie im Eingabeaufforderungsfenster macros ein. Mittels automatischer Vervollständigung wird eine Liste verfügbarer Makros angezeigt. Wählen Sie das folgende Makro aus, und drücken Sie die EINGABETASTE:

    Macros.MyMacros.PublishSpecificCulture.PublishProjectFirstProjectWithEnLocale

  6. Wenn die Veröffentlichung erfolgreich war, wird die folgende Meldung angezeigt: "Veröffentlichung von PublishLocales\PublishLocales.vbproj erfolgreich. Veröffentlichungssprache war 'en'." Klicken Sie im Meldungsfeld auf OK. Wenn die veröffentlichte Webseite angezeigt wird, klicken Sie auf Installieren.

  7. Navigieren Sie zum Verzeichnis C:\Inetpub\wwwroot\PublishLocales\en. Es sollten nun die installierten Dateien, z. B. die Manifeste, setup.exe und die veröffentlichte Webseitendatei, sowie die lokalisierte Ressourcen-DLL angezeigt werden. (Standardmäßig hängt ClickOnce die Erweiterung ".deploy" an EXE- und DLL-Dateien an; nach der Bereitstellung können Sie diese Erweiterung entfernen.)

Siehe auch

Aufgaben

Gewusst wie: Bearbeiten und programmgesteuertes Erstellen von Makros

Gewusst wie: Veröffentlichen von mehreren Projekten in einer Projektmappe

Referenz

Fenster "Makro-Explorer"

Konzepte

Veröffentlichen von ClickOnce-Anwendungen

Weitere Ressourcen

Entwicklungsumgebung für Makros