asp.net - visual - publish asp net core project to iis
WebApplication publish to relative filesystem path (6)
Editar
Para Visual Studio 2012, esta solución no funcionará. Deberías mirar la respuesta de michielvoo justo después de esta.
Respuesta original
Después de probar e intentar encontré la solución: puede usar una ruta relativa estableciendo
file:///./obj/publish
en el cuadro de diálogo Publish WebApp
, pero debe usar una ruta que ya exista y que pueda escribir el usuario que esté utilizando. De esta forma, puede publicar su aplicación web en una carpeta local o en una carpeta relacionada con la ruta.
Déjeme saber si esto ayuda. Lo hizo por mi
Estoy configurando una publicación en una ruta relativa para probar localmente (especialmente las transformaciones xml config). Cada desarrollador tiene su propia ruta al proyecto desprotegido y me gustaría configurar una publicación que sea independiente de la máquina o del entorno.
El diálogo de publicación no sugiere ninguna variable o comodín que esté permitido en él y no acepta obj/publish
o file://./obj/publish
¿Hay alguna forma de publicar en una ruta de sistema de archivos relativa?
Esto funcionó para mí en Visual Studio 2013:
file://../../../Publish
Tenga en cuenta que esto no se publica en obj / publish, como quería el póster original, sino en otro directorio (unas cuantas carpetas arriba) en mi sistema como yo deseaba. Modifíquelo para obj / publish si lo desea.
Para aquellos que usan Visual Studio 2012 y el nuevo archivo de configuración de publicación ( Properties/PublishProfiles/Local.pubxml
), pueden usar esta sintaxis en el archivo:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<SiteUrlToLaunchAfterPublish />
<publishUrl>$(MSBuildThisFileDirectory)../../obj/publish</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
</PropertyGroup>
</Project>
Tenga en cuenta que la propiedad $ (MSBuildThisFileDirectory) se resolverá en el directorio Local.pubxml. A partir de ahí, debes atravesar para llegar a donde necesitas estar.
Para el caso en el que un paso de publicación posterior necesita llamar a msdeploy (MSVS 2015, dnx) con una ruta relativa, otra alternativa es editar el archivo de proyecto (no el pubxml aunque eso también funcione) y crear una variable que sea la conversión de la ruta relativa en una ruta absoluta.
<Target Name="AfterWebPublish" AfterTargets="WebPublish">
<!--
msdeploy cannot currently handle relative paths for contentPath so first convert it to an absolute path
-->
<PropertyGroup>
<AbsOutDir>$([System.IO.Path]::GetFullPath("$(ProjectDir)$(OutDir)"))</AbsOutDir>
</PropertyGroup>
<Exec WorkingDirectory="$(ProjectDir)" Command=''call "$(DevEnvDir)../Tools/vsvars32.bat"'' />
<Exec WorkingDirectory="$(ProjectDir)" Command=''"C:/Program Files (x86)/IIS/Microsoft Web Deploy V3/msdeploy" -verb:sync -source:contentPath="$(AbsOutDir)PublishOutput" -dest:package="$(AbsOutDir)$(MSBuildProjectName).zip"'' />
</Target>
Entonces $(AbsOutDir)
se puede usar en otro lugar según sea necesario (como por ejemplo para msdeploy contentPath). No creo que se pueda ingresar dentro del diálogo.
Desde " how-can-i-get-msbuild-to-evaluate-and-print-the-full-path-when-given-a-relative ".
Solo una ruta regular con barras diagonales funciona en Visual Studio 2012:
../../../../../app
Esto comienza en el directorio raíz del proyecto publicado.
VS 2015 acepta algo así como
../../../DeployFiles
También creará la carpeta si falta, por lo que la configuración de publicación puede pasar al control de código fuente, pero puede ignorar fácilmente la carpeta DeployFiles y su contenido.