2010-08-13 34 views
22

Tengo algunos archivos RDLC en mi aplicación WPF. Cuando publico el proyecto, los archivos del informe no se publican, y cuando intento acceder a ellos con el cliente me aparece un error que dice que no se encuentran. Revisé la carpeta de publicación y, de hecho, no están allí. Me llamo los archivos RDLC con el siguiente código:Publicación de archivos RDLC

Microsoft.Reporting.WinForms.ReportViewer rvReportViewer; 
/* ... */ 
rvReportViewer.LocalReport.ReportPath = string.Format("Reports/{0}.rdlc", ReportName); 

He tratado de establecer la acción Construir sobre éstos a "Recursos", que es lo que tengo para mis archivos de imágenes estáticas, pero eso no parece hacer alguna diferencia

¿Por qué los informes no se copian en el directorio de publicación? ¿Hay alguna manera de forzar esto o debo acceder a ellos de alguna otra manera?

Gracias!

Respuesta

35

No sé si hay preocupaciones especiales con los archivos RDLC, pero este es el enfoque general para asegurarse de que se publiquen otros archivos.

Haga clic con el botón derecho en el explorador de soluciones, seleccione Propiedades. Establezca la "Acción de compilación" en "Contenido" y "Copiar en el directorio de salida en" Copiar si es más reciente ".

Vaya a las propiedades del proyecto-> página de publicación. Pulse" Botón de archivos de aplicación ", marque" Mostrar todos los archivos " ". Ajuste "Estado de publicación" a "Incluir (automático)"

Propiedades de archivo

File Properties

archivos de aplicación

Publish Properties

+0

Al utilizar esta configuración, se publicará una copia adicional de cada archivo rdlc en la carpeta bin. Ver mi respuesta para configuraciones alternativas. –

27

He estado usando la respuesta por @nos por un tiempo, pero me di cuenta de que en la publicación, el conjunto de .rdlc-archivos se copian en dos lugares:

  1. La aplicación web original, ubicación relativa del proyecto;
  2. Dentro de la carpeta bin.

Así que si tuviera \ Reports \ Report1.rdlc, que iba a encontrar en la ubicación publicada:

1. <published folder>\Reports\Report1.rdlc; 
2. <published folder>\bin\Reports\Report1.rdlc. 

no me refiero a utilizar copias de la década de rdlc en el segundo lugar y, de hecho, , si elimino estos, los informes aún se generan.

de cambiar los parámetros para cada rdlc-archivo a:

Build Action: Content; 
Copy to Output Directory: Do not copy. 

Y ahora no hay nada escrito a la segunda ubicación.

+2

Esta debería ser la respuesta correcta – mork

+0

Lo mismo aquí, esta debería ser la solución correcta –

2

en lugar de usar.ReportPath

  1. ** utilizaron esta por debajo de los códigos:

reportViewer1.LocalReport.ReportEmbeddedResource="[Project 
Name].[FolderName if Exist].[ReportName].rdlc"; 
  1. Entonces reconstruir su proyecto de despliegue.
2

Lo siento chicos esto no tiene nada que ver con "Copiar siempre" o "Copiar si es nuevo". De hecho, lo configuré como "Nunca copiar". Este problema se resuelve al cambiar la Acción de compilación de "Recurso incrustado" a "Contenido". Luego, cuando construya y publique archivos RLDC, los copiará en el lugar correcto.

Cuestiones relacionadas