Partager via


Comment : publier un projet qui a des paramètres régionaux spécifiques

Mise à jour : novembre 2007

Il arrive qu'une application contienne des composants avec des paramètres régionaux différents. Dans ce scénario, vous devez créer une solution avec plusieurs projets, puis publier des projets séparés pour chacun des paramètres régionaux. Cette procédure montre comment utiliser une macro pour publier le premier projet dans une solution avec les paramètres régionaux « en ». Si vous souhaitez essayer cette procédure à l'aide de paramètres régionaux autres que « en », veillez à définir localeString dans la macro afin d'assurer la correspondance avec les paramètres régionaux que vous utilisez (par exemple « fr » ou « fr-FR »).

Remarque :

Lorsque vous utilisez cette macro, l'emplacement de publication doit être un partage de convention d'affectation de noms (UNC) ou une URL valide. En outre, les services IIS (Internet Information Services) doivent être installés localement sur votre ordinateur. Pour installer IIS, dans le menu Démarrer, cliquez sur Panneau de configuration. Double-cliquez sur Ajout/Suppression de programmes. Dans Ajout/Suppression de programmes, cliquez sur Ajouter ou supprimer des composants Windows. Dans l'Assistant Composants de Windows, activez la case à cocher Services Internet (IIS) dans la liste Composants. Cliquez sur Terminer pour fermer l'Assistant.

Pour créer la macro de publication

  1. Pour ouvrir l'Explorateur de macros, dans le menu Outils, pointez sur Macros, puis cliquez sur Explorateur de macros.

  2. Créez un module de macro. Dans l'Explorateur de macros, sélectionnez MyMacros. Dans le menu Outils, pointez sur Macros, puis cliquez sur Nouveau module de macro. Nommez le module PublishSpecificCulture.

  3. Dans l'Explorateur de macros, développez le nœud MyMacros, puis ouvrez le module PublierTousProjets en double-cliquant dessus (ou dans le menu Outils, pointez sur Macros, puis cliquez sur Éditeur de macros).

  4. Dans l'Éditeur de macros, ajoutez le code suivant au module, après les instructions 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. Fermez l'Éditeur de macros. Le focus retourne dans Visual Studio.

Pour publier un projet pour des paramètres régionaux spécifiques

  1. Pour créer un projet d'application Windows Visual Basic, dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.

  2. Dans la boîte de dialogue Nouveau projet, sélectionnez Application Windows dans le nœud Visual Basic. Nommez le projet PublierParamètresRégionaux.

  3. Cliquez sur Form1. Dans la fenêtre Propriétés, sous Conception, remplacez la valeur (Default) de la propriété Language par English. Remplacez la valeur de la propriété Text du formulaire par MonFormulaire.

    Notez que les DLL de ressource localisées ne sont pas créées tant qu'elles ne sont pas requises. Par exemple, elles sont créées lorsque vous modifiez le texte du formulaire ou l'un de ses contrôles après avoir spécifié les nouveaux paramètres régionaux.

  4. Publiez PublierParamètresRégionaux à l'aide de l'IDE de Visual Studio.

    Dans l'Explorateur de solutions, sélectionnez PublierParamètresRégionaux. Sélectionnez Propriétés dans le menu Projet. Sur la page Publier du concepteur de projets, spécifiez l'emplacement de publication de https://localhost/PublierParamètresRégionaux, puis cliquez sur Publier maintenant.

    Lorsque la page Web de publication apparaît, fermez-la. (Pour cette étape, vous devez uniquement publier le projet, sans l'installer.)

  5. Publiez encore PublierParamètresRégionaux en appelant la macro dans la fenêtre d'invite de commandes Visual Studio. Pour afficher la fenêtre d'invite de commandes, dans le menu Affichage, pointez sur Autres fenêtres, puis cliquez sur Fenêtre Commande, ou appuyez sur CTRL+ALT+A. Dans la fenêtre d'invite de commandes, tapez macros ; la saisie semi-automatique propose la liste des macros disponibles. Sélectionnez la macro suivante et appuyez sur ENTRÉE :

    Macros.MyMacros.PublishSpecificCulture.PublishProjectFirstProjectWithEnLocale

  6. Lorsque le processus de publication s'est déroulé avec succès, il génère le message "Publish succeeded for PublishLocales\PublishLocales.vbproj. Publish language was 'en'." Cliquez sur OK dans le message. Lorsque la page Web de publication apparaît, cliquez sur Installer.

  7. Regardez dans C:\Inetpub\wwwroot\PublierParamètresRégionaux\en. Vous devez voir les fichiers installés tels que les manifestes, setup.exe et le fichier de page Web de publication, en plus de la DLL de ressource localisée. (Par défaut, ClickOnce ajoute une extension .deploy aux fichiers EXE et aux DLL ; vous pouvez supprimer cette extension après le déploiement.)

Voir aussi

Tâches

Comment : modifier et créer des macros par programme

Comment : publier plusieurs projets dans une solution

Référence

Explorateur de macros, fenêtre

Autres ressources

Publication d'applications ClickOnce

Environnement de développement des macros