Подтвердить что ты не робот

Публикация файлов RDLC

У меня есть несколько файлов RDLC в моем приложении WPF. Когда я публикую проект, файлы отчетов не публикуются, и когда я пытаюсь получить к ним доступ с клиентом, я получаю сообщение о том, что они не найдены. Я проверил папку публикации, и действительно, их там нет. Я вызываю файлы RDLC со следующим кодом:

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

Я пробовал установить действие Build на них в "Resource", что есть у меня для моих статических файлов изображений, но это, похоже, не имеет никакого значения.

Почему отчеты не копируются в каталог публикации? Есть ли способ заставить это произойти, или я должен обращаться к ним каким-то другим способом?

Спасибо!

4b9b3361

Ответ 1

Я не знаю, есть ли особые проблемы с файлами RDLC, но здесь общий подход к обеспечению публикации других файлов.

Щелкните правой кнопкой мыши файл в проводнике решений, выберите "Свойства". Установите для параметра "Построение действия" значение "Контент" и "Скопировать в каталог вывода в" Копировать, если новый ".

Перейдите к свойствам проекта- > Опубликовать страницу. Нажмите "Файлы файлов приложений", установите флажок "Показать все файлы". Установите для параметра "Статус публикации" значение "Включить (авто)"

Свойства файла

File Properties

Файлы приложений

Publish Properties

Ответ 2

Я использовал ответ @nos некоторое время, но я заметил, что в публикации набор .rdlc файлов копируется в два места:

  • Исходное расположение проекта проекта web-приложения;
  • Внутри папки bin.

Итак, если у меня есть \Reports\Report1.rdlc, я бы нашел в опубликованном месте:

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

Я не хочу использовать копии rdlc во втором месте и, действительно, если я их удалю, отчеты все равно будут сгенерированы.

Я изменил настройки для каждого файла rdlc на:

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

И теперь ничто не записывается во второе место.

Ответ 3

Извините, ребята, это не имеет никакого отношения к "Copy Always" или "Copy if Newer". Фактически я установил его в "Никогда не копировать". Эту проблему можно решить, изменив действие сборки с "Встроенный ресурс" на "Содержимое". Затем, когда вы создадите и опубликуете файлы RLDC, они будут скопированы в нужное место.

Ответ 4

вместо использования .ReportPath

  1. ** использовал следующий код:

reportViewer1.LocalReport.ReportEmbeddedResource="[Project
Name].[FolderName if Exist].[ReportName].rdlc";
  1. Затем перестройте проект развертывания.