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
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, espandere il nodo MyMacros, quindi aprire il modulo PublishAllProjects facendovi doppio clic. In alternativa, scegliere Macro dal menu Strumenti, quindi 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, dal menu File scegliere Nuovo, 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. 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.
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.
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
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.
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