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
Per aprire Esplora macro, scegliere Macro dal menu Strumenti, quindi fare clic su Esplora macro.
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.
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.
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
Chiudere IDE macro. La stato attivo ritornerà su Visual Studio.
Per pubblicare un progetto per impostazioni locali specifiche
Per creare un progetto Applicazione Windows di Visual Basic, scegliere Nuovo dal menu File, quindi fare clic su Progetto.
Nella finestra di dialogo Nuovo progetto fare clic sul nodo Visual Basic e selezionare un progetto Applicazione Windows. Denominare il progetto PublishLocales.
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.
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.
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
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.
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
Concetti
Pubblicazione di applicazioni ClickOnce