Condividi tramite


Procedura: pubblicare un progetto dotato di impostazioni locali specifiche

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

Nota

Quando si utilizza questa macro è necessario che il percorso di pubblicazione sia una condivisione UNC (Universal Naming Convention) o un URL valido. È anche necessario installare Internet Information Services (IIS) nel computer locale. 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, aprire il nodo MyMacros, quindi fare doppio clic sul modulo PublishAllProjects per aprirlo. In alternativa, scegliere Macro dal menu Strumenti, quindi fare clic su 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, scegliere Nuovo dal menu File, 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. In Progettazione nella finestra Proprietà modificare il valore della proprietà Lingua da (Predefinito) in Inglese. Impostare la proprietà Text del form su MyForm.

    Si noti che i file DDL delle risorse localizzate non vengono creati finché non sono necessari. Vengono creati, ad esempio, quando si modifica il testo del form o uno dei relativi controlli dopo avere specificato le nuove impostazioni locali.

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

    In Esplora soluzioni selezionare PublishLocales. Scegliere Proprietà dal menu Progetto. Nella pagina Pubblica in Progettazione progetti specificare il percorso di pubblicazione 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 il progetto 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 fare clic su 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 il messaggio "Publish succeeded for PublishLocales\PublishLocales.vbproj. Publish language was 'en'." Scegliere OK nella finestra di messaggio. Quando la pagina Web di pubblicazione viene visualizzata, scegliere Installa.

  7. Controllare il percorso C:\Inetpub\wwwroot\PublishLocales\en. Dovrebbero essere presenti i file installati, quali manifesti, setup.exe e il file della pagina Web di pubblicazione, nonché la DLL delle risorse localizzate. Per impostazione predefinita, ClickOnce aggiunge ai file EXE e DLL l'estensione deploy, che può essere rimossa 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

Concetti

Pubblicazione di applicazioni ClickOnce

Altre risorse

Ambiente di sviluppo delle macro