web-dev-qa-db-fra.com

Publication de fichiers RDLC

J'ai quelques fichiers RDLC dans mon application WPF. Lorsque je publie le projet, les fichiers de rapport ne sont pas publiés, et lorsque j'essaie d'y accéder avec le client, je reçois une erreur indiquant qu'ils ne sont pas trouvés. J'ai vérifié le dossier de publication et, en effet, ils ne sont pas là. J'appelle les fichiers RDLC avec le code suivant:

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

J'ai essayé de définir l'action de construction sur ces "ressources", ce que j'ai pour mes fichiers d'image statiques, mais cela ne semble pas faire de différence.

Pourquoi les rapports ne sont-ils pas copiés dans le répertoire de publication? Existe-t-il un moyen de forcer cela à arriver, ou devrais-je y accéder d'une autre manière?

Merci!

30
Jake

Je ne sais pas s'il s'agit de préoccupations particulières avec les fichiers RDLC, mais voici l'approche générale pour vous assurer que d'autres fichiers seront publiés.

Cliquez avec le bouton droit sur le fichier dans l'explorateur de la solution, sélectionnez Propriétés. Définissez l'action "Build Action" sur "Contenu" et "Copier sur le répertoire de sortie sur" Copier si plus récent ".

Aller aux propriétés du projet-> Publier la page. Appuyez sur "Bouton Fichiers d'application", cochez "Afficher tous les fichiers". Définissez le "statut de publication" sur "Inclure (auto)"

Propriétés du fichier

File Properties

fichiers d'application

Publish Properties

41
nos

J'utilise la réponse de @nos depuis un moment, mais j'ai remarqué que dans la publication, l'ensemble de fichiers .rdlc est copié à deux endroits:

  1. L'emplacement relatif du projet de projet WebApplication d'origine;
  2. À l'intérieur du dossier bin.

Donc, si j'avais\Reports\Report1.rdlc, je trouverais dans l'emplacement publié:

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

Je ne veux pas utiliser des copies du RDLC dans le deuxième lieu et, en effet, si je les supprime, les rapports sont toujours générés.

J'ai changé les paramètres de chaque fichier RDLC à:

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

Et maintenant rien n'est écrit au deuxième emplacement.

36
R. Schreurs

au lieu d'utiliser .reporpath

  1. ** Utilisé le code suivant:

reportViewer1.LocalReport.ReportEmbeddedResource="[Project
Name].[FolderName if Exist].[ReportName].rdlc";
  1. Puis reconstruisez votre projet de déploiement.
2
Lou de los Reyes II