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

Aktualisiert: November 2007

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 die unterschiedlichen Projekte anschließend für die einzelnen Gebietsschemas 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 localeString im Makro auf das verwendete Gebietsschema festlegen (z. B. 'de' oder 'de-DE').

Hinweis:

Zur Verwendung dieses Makros sollte der Veröffentlichungsort eine gültige URL oder eine Universal Naming Convention (UNC)-Freigabe sein. Außerdem müssen Internetinformationsdienste (IIS) auf dem Computer installiert sein. Klicken Sie zum Installieren von IIS im Menü Start auf Systemsteuerung. Doppelklicken Sie auf Software. Klicken Sie unter Software auf das Symbol Windows-Komponenten hinzufügen/entfernen. Aktivieren Sie im Assistenten 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 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. Um in Visual Basic ein Windows-Anwendungsprojekt zu erstellen, zeigen Sie im Menü Datei auf Neu und klicken anschließend 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 Eigenschaftenfenster unter Entwurf die Language-Eigenschaft von (Standard) in Englisch. Ändern Sie die Text-Eigenschaft des Formulars in MyForm.

    Die lokalisierten Ressourcen-DLLs werden erst erstellt, wenn sie benötigt werden. Beispielsweise 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 die Option PublishLocales aus. Wählen Sie im Menü Projekt die Option Eigenschaften aus. Geben Sie im Projekt-Designer auf der Seite Veröffentlichen den Veröffentlichungsort 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 Fenster Visual Studio-Eingabeaufforderung aufrufen. Um das Eingabeaufforderungsfenster anzuzeigen, zeigen Sie im Menü Ansicht auf Weitere Fenster und klicken 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. Jetzt sollten zusätzlich zur lokalisierten Ressourcen-DLL installierte Dateien wie Manifeste, setup.exe und die veröffentlichte Webseitendatei 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"

Weitere Ressourcen

Veröffentlichen von ClickOnce-Anwendungen

Entwicklungsumgebung für Makros