Condividi tramite


Procedura: pubblicare un progetto dotato di impostazioni locali specifiche

Aggiornamento: novembre 2007

Accade spesso che un'applicazione contenga componenti con diverse impostazioni locali. In questi casi, viene creata una soluzione con più progetti distinti, i quali vengono poi pubblicati con impostazioni locali differenti. In questa procedura viene illustrato come utilizzare una macro per pubblicare il primo progetto in una soluzione con le impostazioni locali 'en'. Se nella seguente procedura si desidera utilizzare un'impostazione locale diversa da 'en', impostare localeString nella macro in modo che corrisponda alle impostazioni locali in uso (ad esempio, 'de' o 'de-DE').

Nota:

Quando si utilizza questa macro, il percorso di pubblicazione deve essere un URL valido o una condivisione UNC. Inoltre, è necessario che Internet Information Services (IIS) sia installato nel computer. Per installare IIS, fare clic sul menu Start, quindi scegliere Pannello di controllo. Fare doppio clic su Installazione applicazioni. In Installazione applicazioni fare clic su Installazione componenti di Windows. In Aggiunta guidata componenti di Windows selezionare la casella di controllo Internet Information Services (IIS) dall'elenco Componenti. Scegliere Fine per uscire dalla procedura guidata.

Per creare la macro di pubblicazione

  1. Per aprire Esplora macro, scegliere Macro dal menu Strumenti, quindi fare clic su Esplora macro.

  2. Creare un nuovo modulo macro. In Esplora macro selezionare MyMacros. Scegliere Macro dal menu Strumenti, quindi fare clic su Nuovo modulo macro. Denominare il modulo PublishSpecificCulture.

  3. In Esplora macro, espandere il nodo MyMacros, quindi aprire il modulo PublishAllProjects facendovi doppio clic. In alternativa, scegliere Macro dal menu Strumenti, quindi IDE macro.

  4. In IDE macro, aggiungere il seguente codice al modulo, dopo le istruzioni Import:

    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. Chiudere IDE macro. La stato attivo ritornerà su Visual Studio.

Per pubblicare un progetto per impostazioni locali specifiche

  1. Per creare un progetto applicazione Windows di Visual Basic, dal menu File scegliere Nuovo, quindi fare clic su Progetto.

  2. Nella finestra di dialogo Nuovo progetto fare clic sul nodo Visual Basic e selezionare un progetto Applicazione Windows. Denominare il progetto PublishLocales.

  3. Fare clic su Form1. Nella finestra Proprietà, in Progettazione modificare la proprietà Lingua da (Predefinita) a Inglese. Impostare la proprietà Testo del form su MyForm.

    Notare che le DLL delle risorse localizzate non vengono create fino a quando non sono necessarie. Ad esempio, vengono create quando si modifica il testo del form o uno dei relativi controlli dopo avere specificato le nuove impostazioni locali.

  4. Pubblicare PublishLocales utilizzando l'IDE di Visual Studio.

    In Esplora soluzioni selezionare PublishLocales. Scegliere Proprietà dal menu Progetto. In Progettazione progetti, nella pagina Pubblica specificare un percorso di pubblicazione di https://localhost/PublishLocales, quindi fare clic su Pubblica.

    Chiudere la pagina Web di pubblicazione non appena viene visualizzata. In questa fase non è necessario installare il progetto, ma solo pubblicarlo.

  5. Pubblicare nuovamente PublishLocales richiamando la macro nella finestra del prompt dei comandi di Visual Studio. Per visualizzare la finestra del prompt dei comandi, scegliere Altre finestre dal menu Visualizza, quindi Finestra di comando oppure premere CTRL+ALT+A. Nella finestra del prompt dei comandi, digitare macros. Verrà fornito un elenco di macro disponibili tramite la funzionalità Completamento automatico. Selezionare la macro seguente e premere INVIO:

    Macros.MyMacros.PublishSpecificCulture.PublishProjectFirstProjectWithEnLocale

  6. Al completamento del processo di pubblicazione verrà generato un messaggio analogo al seguente: "Pubblicazione riuscita per PublishLocales\PublishLocales.vbproj. Lingua di pubblicazione 'en'". Scegliere OK nella finestra del messaggio. Quando la pagina Web di pubblicazione viene visualizzata, scegliere Installa.

  7. Cercare in C:\Inetpub\wwwroot\PublishLocales\en. Dovrebbero essere presenti i file installati, ad esempio i manifesti, setup.exe e il file della pagina Web di pubblicazione, oltre alla DLL delle risorse localizzate. Per impostazione predefinita ClickOnce aggiunge l'estensione deploy ai file EXE e DLL; è possibile rimuovere questa estensione dopo la distribuzione.

Vedere anche

Attività

Procedura: modificare e creare macro a livello di codice

Procedura: pubblicare più progetti in una soluzione

Riferimenti

Finestra Esplora macro

Altre risorse

Pubblicazione di applicazioni ClickOnce

Ambiente di sviluppo delle macro