netcore net dotnet contained asp.net-mvc-4 asp.net-web-api msbuild publish-profiles

asp.net-mvc-4 - dotnet - net core 2.1 publish exe



asp.net webapi publish-archivos xml no copiados (8)

Abra su perfil de publicación (* .pubxml) e incluya este código en el elemento "Proyecto":

<ItemGroup> <Content Include="bin/yourDocumentationFile.xml"> <CopyToOutputDirectory>true</CopyToOutputDirectory> </Content> <!-- Include a content to each documentation file --> </ItemGroup>

Tengo el proyecto MVC 4.0 WebApi con ayuda generada automáticamente en base a esto .

Mis clases modelo están almacenadas en otros proyectos en mi solución. La generación del archivo xml está habilitada para cada proyecto (Propiedades del proyecto -> Construir -> OutPut -> Archivo de documentación XML - Habilitado).

En depuración local, todo está bien: los archivos xml se copian en el directorio del proyecto y veo comentarios para los campos / clases de otros proyectos.

Pero cuando uso publicar perfil (en la carpeta), los archivos xml no se copian a la carpeta de salida. Solo se copia un archivo xml del proyecto principal de WebApi. Entonces no veo comentarios a clases de otros proyectos.


Complementando la respuesta anterior, también hay otro tipo de etiqueta para incluir, como el artículo a continuación:

asp.net/mvc/overview/deployment/visual-studio-web-deployment/…

Etiqueta:

<CopyAllFilesToSingleFolderForMsdeployDependsOn> CustomCollectFiles; $(CopyAllFilesToSingleFolderForMsdeployDependsOn); </CopyAllFilesToSingleFolderForMsdeployDependsOn>


Pude resolver esto usando un objetivo MSBuild personalizado en el archivo de publicación del archivo .pubxml. Sigue los pasos a continuación. Este objetivo MSBuild copiará todos los archivos .xml de la carpeta bin de la API web a la carpeta bin donde está publicando. No es necesario copiar estos archivos a App_Data.

1) Abra el archivo .pubxml apropiado desde [Carpeta del proyecto] / Propiedades / Perfiles de publicación.

2) Agregue este fragmento dentro de la etiqueta <Project><PropertyGroup> :

<CopyAllFilesToSingleFolderForPackageDependsOn> CustomCollectFiles; $(CopyAllFilesToSingleFolderForPackageDependsOn); </CopyAllFilesToSingleFolderForPackageDependsOn>

3) Agregue este fragmento después de la etiqueta <PropertyGroup> :

<Target Name="CustomCollectFiles"> <ItemGroup> <_CustomFiles Include="bin/*.xml" /> <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)"> <DestinationRelativePath>bin/%(Filename)%(Extension)</DestinationRelativePath> </FilesForPackagingFromProject> </ItemGroup> </Target>

El crédito va a esta respuesta, que fue abordar cómo incluir archivos desde fuera del directorio del proyecto al momento de la publicación.


Puedes hacerlo de dos maneras diferentes:

1) Vaya a la propiedad de su proyecto -> seleccione la opción de compilación -> verifique "Archivo de documentación XML" -> agregue la ruta "App_data / XMLDocument.xml" -> guarde la configuración, cree su proyecto -> incluya su XMLDocument. archivo xml -> seleccionar propiedad -> copiar al directorio de salida -> seleccionar "Copiar siempre"

2) Vaya a la propiedad de su proyecto -> seleccione la opción "Paquete / Publicar web" -> elementos a las pantallas -> seleccione "todos los archivos en este proyecto" de la lista desplegable


Si su sitio utiliza un Perfil de publicación (por ejemplo, si descargó uno de su ISP), debe asegurarse de que la siguiente opción esté configurada como False.

<ExcludeApp_Data>False</ExcludeApp_Data>

Las propiedades del archivo XML se pueden establecer en: Build Action - Content, Copy To Output Directory - Always

Pero si el parámetro anterior se establece en True en el perfil de publicación, entonces su archivo XML nunca se publicará. Aprendí esto de la manera difícil.


Tuve el mismo problema, que solo se implementó el archivo xml del proyecto webapi.

Para solucionarlo, tuve que agregar esto a mi archivo de proyecto web (Api), dentro del primer elemento PropertyGroup .

<ExcludeXmlAssemblyFiles>false</ExcludeXmlAssemblyFiles>

Después de eso, se ha publicado la documentación xml-files de todos los proyectos (donde está habilitada).


Tuve un problema similar, para mí la respuesta fue un poco "¡do!" momento.

En la configuración del proyecto, solo había activado el archivo de documentación XML en la configuración de depuración, y no en Release. Estaba implementando con Release, por lo que la documentación XML no se estaba generando en realidad. Así que la solución era asegurarse de habilitar la documentación XML para las configuraciones de depuración y liberación.


Una forma es agregar los archivos XML a su carpeta " App_Data " dentro del proyecto, y luego dentro de visual studio, seleccione un archivo en su propiedad " Copiar al directorio Ouput " a " Siempre ".