Получение относительного пути к rdlc сообщает в моем приложении winform

Я автоматически создаю PDF из некоторых наших отчетов в процессе конца месяца. Я сталкиваюсь с проблемой где ReportViewer.LocalReport не может найти мой отчет. В рамках проекта файлы отчета находятся в" (корневая папка проекта)/Reports/report.rdlc".

Как я устанавливаю ReportViewer.LocalReport.ReportPath таким образом, я могу сослаться на свой файл отчета? Я не установил бы полный путь, потому что я не знаю, где он был бы установлен при установке на клиентских машинах.

8
задан Chepene 8 August 2012 в 14:00
поделиться

3 ответа

Используйте свойство Application.StartupPath, оно всегда указывает на каталог где находится ваш EXE:

  using System.IO;
  ...

     string exeFolder = Application.StartupPath;
     string reportPath = Path.Combine(exeFolder, @"Reports\report.rdlc");

Вы должны убедиться, что отчет также скопирован в вашу папку bin \ Debug \ Reports, чтобы он работал в среде IDE. Используйте xcopy / s / d в событии после сборки, чтобы скопировать файл (ы).

16
ответ дан 5 December 2019 в 10:40
поделиться

Вы можете сохранять отчеты в файле "ресурсов" и с помощью средства чтения сборки данной библиотеки .dll / .exe, в которую встроен "ресурсный" файл, можно читать как ссылку на поток. Затем настройте свой отчет на встроенный поток, чтобы получить определение отчета.

Особое примечание. Если в вашем отчете есть вложенные вложенные отчеты, отчет не будет выполнен, если вы также не укажете в определении вложенного отчета LocalReport другую такую ​​ссылку на файл .rdlc вложенного отчета.

0
ответ дан 5 December 2019 в 10:40
поделиться

Путь всегда относительно вашего "текущего каталога", который в большинстве случаев является исполняемым файлом - измените файлы rdlc, чтобы они вместо этого копировались в папку назначения встроенных в ресурсы (обычно так и делается). Путь в вашем проекте не имеет значения.

0
ответ дан 5 December 2019 в 10:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: