Visual Studio 2012 Web Publish no copia archivos


229

Tengo un proyecto de aplicación web en VS 2012 y cuando uso la herramienta de publicación web, se construye con éxito pero no copia ningún archivo al destino de publicación (sistema de archivos en este caso).

Si miro el resultado de la compilación, puedo ver que todo se copia en obj \ Release \ Package \ PackageTmp \ correctamente, pero todo lo que veo en el resultado de la compilación es esto:

4> Proyecto de construcción terminado "{Project} .csproj".
4> Eliminando archivos existentes ...
4> Publicando carpeta / ...
4> ========== Compilación: 3 exitosos, 0 fallidos, 1 actualizado, 0 omitido ===== =====
========== Publicación: 1 exitoso, 0 fallido, 0 omitido ==========

Aunque dice que la publicación se realizó correctamente, no hay archivos en el directorio de destino para la publicación.

He visto esto en varios proyectos y, a veces, parece que las configuraciones de Solución / Plataforma causan este problema, pero no he podido identificar una causa exacta para esto.

¿Alguien más ha visto que esto sucede o tiene una idea sobre cómo hacer que funcione correctamente?

ACTUALIZAR:

Puede que haya encontrado una solución para esto. Acabo de hacer que esto vuelva a suceder y estaba jugando con la configuración de publicación. Una vez que cambié la Configuración seleccionada en la pestaña Configuración a otra configuración y luego volví a la que quería usar, todos mis archivos comenzaron a publicarse nuevamente. Esperemos que esto funcione en otros proyectos en el futuro.

ACTUALIZACIÓN 2:

Publiqué un error en Microsoft Connect y escuché de un desarrollador del equipo VS Web Developer. Dijo que han solucionado este problema en sus compilaciones internas y que pronto lanzarán una actualización de la herramienta de publicación que solucionará este problema.

ACTUALIZACIÓN 3:

Esto se ha solucionado recientemente con Visual Studio 2012 Update 2


1
Eso es raro. Si ve la carpeta de publicación / ..., debería funcionar correctamente. Le sugiero que consulte con su camino. Asegúrate de estar mirando el lugar correcto.
maxisam

14
Esto me sucedió en Windows 8 con Visual Studio 2012. ¡Acabo de crear un nuevo perfil de publicación y funciona! Probablemente un error en VS 2012.: /
T.Ho

3
Yo tuve el mismo problema. Eliminar y recrear el perfil de publicación me sirvió.
Tommy Jakobsen

3
Eliminar y volver a crear perfiles me sirvió.
Michael Wells

3
Esto no se ha solucionado en la Actualización 2 de Visual Studio, ni en la Actualización 3. Verifique la respuesta más popular después de la "respuesta aceptada" (que no es la solución). Simplemente edite el perfil y, en la pestaña "Configuración", seleccione la configuración correcta de la lista (si la versión es la correcta, seleccione depurar, guardar, luego edite nuevamente y seleccione la versión). Guarda y publica.
firepol

Respuestas:


78

Esto puede ser causado por soluciones / proyectos creados con el RC de vs2012. Esto me sucedió hace meses y solucionó el problema asegurándome de que las configuraciones de construcción de mi solución coincidieran con las configuraciones de mi proyecto ...

Recientemente tuve el mismo problema al abrir la misma solución creada originalmente en vs2012RC con VS2012 Express para Web. Hice exactamente lo que sugería el póster original y solucionó mi problema.

Aquí está el hilo que me llevó a la respuesta:

connect.microsoft.com/VisualStudio/feedback/details/746321/publish-web-application-fails

La respuesta pertinente de la conversación anterior que me ayudó fue:

Publicado por Microsoft el 13/06/2012 a las 12:00 p. M. Hola Andrew,

Este fue un error en cómo manejamos la configuración de la solución frente a la configuración del proyecto. Asumimos incorrectamente que serían lo mismo (p. Ej., Release de la solución | x86 tendría cada proyecto configurado en Release | x86 también), lo que nos hizo usar las propiedades de compilación incorrectas para publicar archivos.

La solución es hacer que la configuración de la solución y la configuración de la construcción coincidan. Este problema se solucionará en la próxima versión de Visual Studio 2012.

Gracias, Jimmy Lewis SDET, equipo de Visual Web Developer


8
Este problema me ocurre en un nuevo proyecto de Visual Studio 2012. En el pasado, se publicó a través de FTP, pero ahora, cuando trato de publicarlo, hace exactamente lo anterior: finge, dice que fue exitoso y no empuja nada. Realiza la salida en el directorio obj, pero en realidad nunca la copia en el servidor. Sin embargo, el truco de configuración de cambio lo soluciona.
Chris Moschini

12
¡Oye! Todavía está roto en SP2!

66
Acabo de tener el mismo problema y me di cuenta de que era porque la configuración de publicación predeterminada es "Cualquier CPU", pero mi solución está configurada en "x86". Cambiar la configuración en Publicar a x86 solucionó el problema.
Sam

Ninguna de las soluciones anteriores funciona para mí. Eliminar perfiles y recrearlos, cambiar la configuración y volver a cambiar, reiniciar VS, reconstruir todo, etc. Creé una nueva vista en mi aplicación. Está allá. Puedo verlo. Cuando ejecuto localmente se muestra. Cuando publico, no está allí. Tengo la actualización 4.
Robert

Lo único que funciona para mí es eliminar mi vista del proyecto y agregarla nuevamente. Parece despertar el IDE con la idea de que hay algo nuevo aquí. Entonces, donde sea que VS rastree las sumas y restas del proyecto, pueden estar involucradas.
Robert

104

El mismo problema. La solución alternativa fue cambiar la configuración de publicación de Release a Debug. Vuelva a publicar y luego vuelva a publicar ...


¡SI! Esta es la buena respuesta. En mi caso, no uso los perfiles predeterminados "Release" o "Debug", sino "DEV", "STAGE" y "LIVE". He visto que, por ejemplo, para STAGE, en una computadora colega que descargó mi solución a través de TFS, el perfil se configuró incorrectamente en "Release" (lo mismo para todos los demás perfiles). Así que simplemente tuve que corregirlo y señalarlo a "ETAPA" (o DEV / LIVE para los otros). La publicación funcionó. Gracias.
firepol

Trabajado como un encanto. Esta debería ser la respuesta aceptada.
Aycan Yaşıt

39

Para llevar esto un poco más lejos. Tiene dos archivos que se crean cuando crea un perfil de publicación.

  • NewProfile.pubxml
  • NewProfile.pubxml.user

Cuando abre un proyecto que tiene estos archivos en la carpeta PublishProfile desde un control de origen, solo tiene el .pubxmlarchivo y no el .publxml.userarchivo, por lo que crea el .publxml.userarchivo sobre la marcha cuando abre el proyecto. Cuando crea el nuevo .publxml.usersobre la marcha, el xml se ve así:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

Cuando crea un nuevo perfil, crea xml que se parece a:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <TimeStampOfAssociatedLegacyPublishXmlFile />
    <EncryptedPassword />
  </PropertyGroup>
</Project>

Si toma el <PropertyGroup>nodo y lo coloca en el .pubxml.userarchivo, sus PublishProfiles comenzarán a funcionar nuevamente.


55
+1 Eso me pareció a mí. Se hace un poco más fácil si abre los dos archivos y los compara después de crear un nuevo perfil. También descubrí que ambos archivos debían verificarse en el control de origen si trabajaban en equipo.
Deano

@Deano El problema con el registro en cualquier archivo * .user es que ya no tiene la capacidad de personalizar el proyecto individual (local). El objetivo del archivo de usuario es permitir que los miembros individuales del equipo tengan su propia configuración local.
Dave Riedl

¿Hay alguna otra solución en lugar de agregar el archivo ".pubxml.user" en el control de origen?
Ubikuity

No comprometemos los archivos * .user en el control de código fuente, pero por cierto, no usamos el perfil de publicación dentro de Visual Studio, ya que nuestro servidor de Integración continua y el proceso de compilación administran todo eso ...
Brett Rigby,

21

Una solución fácil es eliminar su perfil de publicación y crear uno nuevo.

cuando hace clic derecho en su solución y selecciona publicar, tiene un perfil establecido. elimine esto y cree uno nuevo.

Esto lo arreglará.

Tuve este problema al cambiar de 2010 a 2012


Esto funciona para mí, lo que hago es eliminar los perfiles en la máquina local y recrearlos. Esto no afecta a las otras máquinas de desarrollo.
Jean Jimenez

Tuve este problema al cambiar el proyecto de vs2013 a vs2012 y esto solucionó por completo el problema
NikiUsefi

Esto funcionó para mí. Utilicé estos pasos para reconstruir mi perfil de publicación (sistema de archivos): stackoverflow.com/a/20616521/381082
DeveloperDan

9

Tuve el mismo error y cambié la configuración de lanzamiento a depuración y el problema se resolvió.


8

Tuve este mismo problema, sin embargo, ninguna de las respuestas en este hilo funcionó para mí. Mi problema fue que hay un directorio que contiene archivos HTML estáticos generados dinámicamente (por mi aplicación). No se estaba publicando todo el directorio.

La solución que funcionó para mí se encontró aquí :

Un problema que recibí hace un tiempo y pensé que debería documentar fue que ciertos tipos de archivos no se cargaban cuando publiqué mi proyecto.

Los tipos de archivo en cuestión eran archivos .pdf y .rtf.

La razón por la que esto sucedió fue porque estas extensiones de archivo no fueron reconocidas por requerir la publicación de Visual Studio. Afortunadamente, esto se puede cambiar en Visual Studio.

Seleccione los archivos que no se están copiando. En Propiedades, asegúrese de que la Acción de compilación esté establecida en Contenido .

Si esto no funciona, se puede probar lo siguiente.

En el menú Proyecto , seleccione Paquete / Publicar web y observe este menú desplegable:

ingrese la descripción de la imagen aquí

Intente cambiar esto a Todos los archivos en esta carpeta del proyecto.


Esto funcionó para mi situación, cuando solo se publicaron ALGUNOS de los archivos.
AndrewRalon

Esto solo funcionó porque los archivos no se incluyeron en el proyecto correctamente. Consulte esta respuesta a continuación para conocer la causa raíz y la solución: stackoverflow.com/a/40721544/3520070
AndrewRalon

¿Qué respuesta a continuación quieres decir?
Tomas Kubes

7

Esto se debe a que .pubxml.user contiene la información requerida para publicar, y ese archivo no está (y no debería) incluirse en el control de código fuente. Para corregir este error de VS, copie la información del archivo .pubxml.user en el archivo .pubxml. Las propiedades relevantes son:

<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>

Póngalos en su .pubxml y debería estar listo para comenzar.


7

Probé todas estas soluciones, pero esta es la que siempre funciona.

Simplemente cambiamos el "Método de publicación:" de "Sistema de archivos" a, por ejemplo, "Implementación web", e inmediatamente lo cambiamos de nuevo a "Sistema de archivos".


Sí, esto es lo que finalmente funcionó para mí también (probé todas las otras sugerencias anteriores). Esto es con vs2010
Karen

5

Tengo (tuve) el mismo problema para varios proyectos. Los únicos afectados parecen ser los proyectos web. Eliminar y volver a crear el perfil resuelve el problema solo una vez. Además, la comparación de la publicación xml generado no produce diferencias, por lo que no parece estar relacionado con el perfil en absoluto.

La solución mencionada por OP para cambiar los problemas de compilación de ida y vuelta parece ser la única solución confiable en este momento.


La misma solución fue la única solución para mí también. Para aclarar, pasos: Construir> Publicar. Elija la pestaña Configuración a la izquierda. Cambie la configuración de compilación a cualquier otra cosa. Verá que ahora hay un asterisco (*) al lado del nombre del Perfil de publicación: es una señal de que el error se ha frustrado. Cambie la configuración de compilación a lo que deseaba. Continúe con la publicación como de costumbre. Fijo.
Chris Moschini

4

Me encontré con el mismo problema en VS 2010, después de verificar la salida de publicación, los registros de eventos, encender y verificar los registros de Visual Studio, etc. Luego decidí eliminar la publicación web (a través de agregar / eliminar) que creo que se había actualizado recientemente a v1. 0.30810.0. Esto resolvió el problema.


2
Tuvimos este problema, parecía estar relacionado con el archivo pubxml.user en la carpeta PublishProfiles en Mi proyecto : el mío tenía una lista de archivos generados por la máquina para publicar, aunque la documentación dice que este archivo es solo para configuraciones específicas para mí ( y por lo tanto no se coloca en el control de fuente). Pude publicar bien. Mi colega tomó una copia nueva de nuestro código fuente y no pudo publicar; cuando se generó su archivo pubxml.user no se enumeraron archivos. Hemos desinstalado la publicación web actualizada y todo está bien nuevamente.
Nick

4

Aquí tuvimos el mismo problema.

Simplemente cambiamos el "Método de publicación:" de "Sistema de archivos" a, por ejemplo, "Implementación web", e inmediatamente lo cambiamos de nuevo a "Sistema de archivos".


esto debe ser en la parte superior
JoeBrockhaus

Esto ahora está solucionado con Visual Studio 2012 Update 3
KoalaBear

4

Lo siguiente funcionó para mí:

Simplemente cambie de Release> Debug> Release (o viceversa) y luego publique.

No es necesario eliminar, editar ni publicar nada que no necesite.


4

Mi problema estaba en la configuración incorrecta del archivo myproject.csproj. El archivo '_address-step1-shown.cshtml' no se copió en la publicación. 'Ninguno' cambió a 'Contenido', ahora está bien. ingrese la descripción de la imagen aquí


¡ESO FUE TODO! ¡El proyecto tenía muchos archivos que se registraron en el control de origen, pero se marcaron como Noneen el archivo .csproj, o faltaban por completo en el proyecto (allí pero no se "usaron")! Esto explica completamente por qué la ejecución local siempre funcionó, pero la publicación nunca funcionó. : D
AndrewRalon

3

Mismo problema con VS 2012 Pro con un destino de publicación de disco. El proyecto solía publicarse correctamente, pero comenzó a hacer este problema donde no pudo copiar los archivos a la carpeta de destino.

La solución fue editar el perfil de publicación, cambiar el modo de Release (Cualquier CPU) a depurar y luego volver a Release (Cualquier CPU). Hacer esto hace que el archivo PublishProfiles \ projname.pubxml.user se reescriba (como se describió anteriormente). Parece que agregó los elementos LastUsedBuild, LastUsedPlatform y TimeStampOfAssociatedLegacyPublishXmlFile debajo del nodo del grupo de propiedades. Una vez completada la publicación, agrega otro ItemGroup con archivos individuales y tiempos de publicación.


1

Esta acción fue exitosa para mí:

Elimine los perfiles de publicación en "Propiedades> Perfiles de publicación> xxxx.pubxml" y vuelva a configurarlos.


1

Por lo que vale, eventualmente dejé de pelear con Web Deploy para que hiciera lo que quería (copiar archivos desplegables y nada más), así que lo escribí en PowerShell y estoy muy contento con el resultado. Es mucho más rápido que cualquier cosa que probé a través de MSBuild / Web Publish, presumiblemente porque esos métodos todavía estaban haciendo cosas que no necesitaba.

Aquí está la esencia ( literalmente ):

function copy-deployable-web-files($proj_path, $deploy_dir) {
  # copy files where Build Action = "Content" 
  $proj_dir = split-path -parent $proj_path
  [xml]$xml = get-content $proj_path
  $xml.Project.ItemGroup | % { $_.Content } | % { $_.Include } | ? { $_ } | % {
    $from = "$proj_dir\$_"
    $to = split-path -parent "$deploy_dir\$_"
    if (!(test-path $to)) { md $to }
    cp $from $to
  }

  # copy everything in bin
  cp "$proj_dir\bin" $deploy_dir -recurse
}

En mi caso, lo llamo en un entorno de CI (TeamCity), pero también podría engancharse fácilmente en un evento posterior a la compilación.


1

Encontré que podría solucionar este problema cambiando la ubicación de destino de obj / [release | stage | ..] a una nueva ruta fuera de las carpetas de la solución por completo, por ejemplo, c: \ implementación. Parece que VS 2012 se estaba confundiendo y tal vez se estaba rindiendo en algún lugar durante el proceso de publicación.

Mate


1

Tuve el mismo problema recientemente en VS 2013 para un proyecto MVC en el que importé Umbraco CMS. No pude publicar. La respuesta anterior ayudó, aunque necesité un tiempo para descubrir qué debería hacer en realidad en VS. Necesitaba un poco de investigación, por ejemplo, en blogs de MS para averiguarlo. Trato de decirlo simple:

  • Elija en la barra de herramientas VS una configuración determinada, por ejemplo, Release y Any CPU. Ejecuta el proyecto.
  • Luego haga clic derecho en el Explorador de soluciones en la solución en cuestión, elija Publicar. Cree un nuevo perfil de publicación o use uno dado, pero siempre asegúrese de que en la configuración se elija la misma configuración (por ejemplo, Release y Any CPU), como antes de ejecutar el proyecto por última vez.
  • Además, en mi caso fue necesario eliminar la carpeta OBJ porque aquí la configuración de mis últimos intentos fallidos de publicación se atascó, aunque reinicié VS y eliminé todos los perfiles de publicación.

0

Tengo una aplicación web con varios otros proyectos referenciados en la solución. Me he desplegado con éxito con una sola configuración de publicación muchas veces en el pasado. Cambié la configuración del proyecto de depuración a versión para un proyecto que se había perdido en el pasado. La próxima vez que intenté implementar tuve estos síntomas, donde la publicación falla silenciosamente, no hace nada y dice que tuvo éxito:

1>------ Build started: Project: Project, Configuration: DeployProduction Any CPU ------
1>  
2>Publishing folder /...
========== Build: 1 succeeded, 0 failed, 9 up-to-date, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========

La única forma de recuperarlo era borrar el perfil de publicación, cerrar Visual Studio para forzarlo a guardar la eliminación, volver a abrirlo y recrear el perfil de publicación desde cero. Una vez que hice eso, pude publicar bien nuevamente.

Win8 VS2012, portátil horrible.


0

En Visual Studio 2012, cambiar entre versiones sigue causando problemas.

Agregamos un evento previo a la compilación para eliminar la objcarpeta: del /s /f /q $(ProjectDir)\objy solucionó el problema de la publicación. La limpieza funciona a veces, pero no siempre.


0

Finalmente encontré la respuesta por mí mismo. Todas las soluciones anteriores no funcionan para mí.

Lo que había hecho es mover el proyecto para conducir c, cambiar la carpeta del proyecto a algo más corto y publicarlo.

La razón por la que falló de mi lado es que tenía un nombre / jerarquía de proyecto muy largo.

C: \ Users \ user \ Desktop \ Compliance Management System \ ComplianceIssueManagementSystem \ ComplianceIssueManagementSystem

Pensé en esto porque a veces cuando extraigo el archivo rar dice que el nombre / ruta es demasiado largo. Pensé que sería lo mismo que Visual Studio 2012 publicar. y lo hace!

Espero que les sirva de ayuda.


0

Compruebe su proyecto actual si ha realizado una copia de respaldo con el mismo nombre de clase y diferente nombre de página (el nombre de clase heredará el archivo copiado). ¡Al final eso confundirá al compilador!

CodeFile = "Consolidated.aspx.vb" Hereda = "Consolidado


0

Ninguna de las soluciones anteriores funcionó para mí.

Pero noté que de nuestros cinco proyectos ASP.NET MVC en nuestra solución principal, cuatro de ellos colocaron el paquete de implementación en el lugar correcto, mientras que uno lo dejó en obj \ Debug.

Comparé los proyectos y encontré una discrepancia. La solución fue cambiar esto :

<Import
    Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

a esto :

<Import
  Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets"
  Condition="'$(VSToolsPath)' != ''" />
<Import
  Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets"
  Condition="false" />

Después de realizar este cambio, los cinco proyectos colocaron sus paquetes de implementación en el lugar correcto.

(Perdón por las largas colas, pero no pude encontrar una mejor manera de condensarlas).


Estoy experimentando una situación en la que uno o dos archivos parecen pasarse por alto y no se publican en el servidor, pero mi archivo .vbproj ya tiene los dos elementos <Import> que sugiere
bkwdesign

0

Encontré esto con los archivos de referencia de servicio generados por Visual Studio que se vuelven demasiado largos en términos de la longitud total de la ruta.

Los acorté volviendo a generar la referencia de servicio utilizando svcutil.exe, eliminando todos los archivos originales de referencia de servicio.

svcutil se puede llamar así:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcUtil.exe" /language:CS http://myservice /namespace:*,My.Namespace

My.Namespace debe reemplazarse con el espacio de nombres existente en el proxy de servicio generado (normalmente se encuentra en el archivo Reference.cs) para evitar errores de compilación.

http://myservice debe reemplazarse con la URL del punto final del servicio.


0

Me he metido en el mismo problema. Ninguna de las soluciones anteriores funcionó para mí.

Por lo tanto, he excluido los archivos que no se pudieron copiar durante la publicación.


0

Había publicado el sitio web varias veces. Pero un día cuando modifiqué un archivo aspx y luego intenté publicar el sitio web, resultó en una carpeta publicada vacía.

En mi solución, encontré una solución.

  1. El asistente de publicación reflejará cualquier error durante la publicación, pero no copiará ningún archivo a la carpeta de destino.

  2. Para averiguar el archivo que genera el error, simplemente copie el contenido de la carpeta del sitio web en una nueva carpeta e inicie el estudio visual con ese sitio web.

  3. Ahora, cuando intentes publicarlo, te dará el nombre del archivo que contiene errores.

  4. Simplemente rectifique el error en la carpeta original del sitio web e intente publicar, funcionará como estaba antes.


0

Siga estos pasos para resolver:

Build > Publish > Profile > New

Cree un nuevo perfil y configúrelo con la misma configuración que su perfil existente.

El proyecto ahora se publicará correctamente. Esto ocurre a menudo como resultado de un perfil de publicación controlado por el origen de otra máquina que se creó en una versión más reciente de Visual Studio.


0

CORREGIDO - varias soluciones ofrecidas no funcionaron para mí. Lo que funcionó para mí con VS Community 2017, Windows Server 2012 R2 fue cambiar las variables de entorno TEMP y TMP para el usuario y luego reiniciar el sistema e implementarlo nuevamente (reiniciar VS no fue suficiente). Estas variables temporales son donde VS publica la temperatura.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Reiniciar Visual Studio después de cambiar las variables temporales no funcionó, tuvo que reiniciar el sistema.


-1

Primero:

  • Construir en la versión de configuración.
  • En la página Propiedades del proyecto-> seleccione Todos los archivos y carpetas en Paquete / Publicar web.
  • Reconstruir la solución (después de la solución limpia).
  • ahora publica.

Mientras publica, vuelva a verificar lo que ha elegido.
Esto debería hacerlo. ¡Lo hizo por mí! :)


-2

Lo más fácil es

   1. select the file(s) that are not being copied,
   2. Press <F4> to get the properties window
   3. Make the "Build Action" property "compile" or "content" depending on what it is.
   4. Now this particular file will be included!
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.