Cómo: Publicar un proyecto que tiene una configuración regional específica
Actualización: noviembre 2007
No es raro que una aplicación contenga componentes con configuraciones regionales diferentes. En este escenario, tendría que crear una solución que tenga varios proyectos y, a continuación, publicar proyectos independientes para cada configuración regional. En este procedimiento se muestra cómo usar una macro para publicar el primer proyecto en una solución mediante la configuración regional 'en'. Si desea probar este procedimiento con una configuración regional distinta de 'en', asegúrese de establecer localeString en la macro para que coincida con la configuración regional que está usando (por ejemplo, 'de' o 'de-DE').
Nota: |
---|
Al usar esta macro, la ubicación de publicación debe ser una dirección URL válida o un recurso compartido de la Convención de nomenclatura universal (UNC). Además, Internet Information Services (IIS) debe estar instalado en el equipo. Para instalar IIS, en el menú Inicio, haga clic en el Panel de control. Haga doble clic en Agregar o quitar programas. En Agregar o quitar programas, haga clic en Agregar o quitar componentes de Windows. En el Asistente para componentes de Windows, active la casilla Internet Information Services (IIS) en la lista Componentes. A continuación, haga clic en Finalizar para cerrar el asistente. |
Para crear la macro de publicación
Para abrir el Explorador de macros, en el menú Herramientas, elija Macros y, a continuación, haga clic en Explorador de macros.
Cree un nuevo módulo de macros. En el Explorador de macros, seleccione MyMacros. En el menú Herramientas, elija Macros y, a continuación, haga clic en Nuevo módulo de macros. Asigne al módulo el nombre PublishSpecificCulture.
En el Explorador de macros, expanda el nodo MyMacros y, a continuación, abra el módulo PublishAllProjects haciendo doble clic en él (o bien, en el menú Herramientas, elija Macros y, a continuación, haga clic en IDE de macros).
En el IDE de macros, agregue el código siguiente al módulo, después de las instrucciones 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
Cierre el IDE de macros. El foco volverá a Visual Studio.
Para publicar un proyecto para una configuración regional específica
Para crear un proyecto de aplicación para Windows de Visual Basic, en el menú Archivo, elija Nuevo y, a continuación, haga clic en Proyecto.
En el cuadro de diálogo Nuevo proyecto, seleccione Aplicación para Windows en el nodo Visual Basic. Asigne al proyecto el nombre PublishLocales.
Haga clic en Form1. En la ventana Propiedades, en Diseño, cambie la propiedad Language de (Predeterminado) a Inglés. Cambie la propiedad Text del formulario a MyForm.
Observe que las DLL de recursos adaptados no se crean hasta que se necesiten. Por ejemplo, se crean al cambiar el texto del formulario o uno de sus controles después de haber especificado la nueva configuración regional.
Publique PublishLocales mediante el IDE de Visual Studio.
En el Explorador de soluciones, seleccione PublishLocales. En el menú Proyecto, seleccione Propiedades. En el Diseñador de proyectos, en la página Publicar, especifique una ubicación de publicación de https://localhost/PublishLocales y, a continuación, haga clic en Publicar ahora.
Cuando aparezca la página Web de la publicación, ciérrela. (Para este paso, únicamente tiene que publicar el proyecto; no tiene que instalarlo.)
Vuelva a publicar PublishLocales invocando la macro en la ventana del símbolo del sistema de Visual Studio. Para ver la ventana del símbolo del sistema, en el menú Ver, elija Otras ventanas y, a continuación, haga clic en Ventana Comandos o presione CTRL+ALT+A. En la ventana del símbolo del sistema, escriba macros; Autocompletar proporcionará una lista de macros disponibles. Seleccione la siguiente macro y presione ENTRAR:
Macros.MyMacros.PublishSpecificCulture.PublishProjectFirstProjectWithEnLocale
Si el proceso de publicación ha finalizado correctamente, se generará el mensaje "Publicación correcta de PublishLocales\PublishLocales.vbproj. El idioma de publicación es 'en'." Haga clic en Aceptar en el cuadro de mensaje. Si aparece la página Web de publicación, haga clic en Instalar.
Busque en C:\Inetpub\wwwroot\PublishLocales\en. Debería ver los archivos instalados, por ejemplo los manifiestos, setup.exe y el archivo de página web de publicación, así como el archivo DLL de recursos adaptado. (De forma predeterminada ClickOnce lleva anexa una extensión .deploy en los archivos EXE y DLL; después de la implementación, puede quitar esta extensión.)
Vea también
Tareas
Cómo: Editar y crear macros mediante programación
Cómo: Publicar varios proyectos en un solución
Referencia
Explorador de macros (Ventana)