У меня есть решение для выставления счетов WPF, которое развернуто с использованием ClickOnce для более чем 500 пользователей, CrystaReports2010 использовалось для отчетов, 85% пользователей установили WindowsXP на своих компьютерах: (
Crystal Reports работает простоштраф на компьютерах с WindowsXP до тех пор, пока пользователь не экспортирует отчет с помощью встроенной кнопки экспорта в Crystal Reports Viewer, если он сделал это, процесс экспорта завершился успешно, но он не может открыть любой другой отчет в решении, пока он не перезапуститприложение.
![Export Button](https://i.stack.imgur.com/HGLdg.jpg)
Это ошибка при попытке открыть новый отчет после экспорта:
![The Error Message](https://i.stack.imgur.com/i8PLO.jpg)
Я сохраняюсообщает в моем решении как контент внешних ресурсов за пределами файла .exe приложения, и я загружаю их по требованию, что-то вроде этого:
var report = new ReportDocument();
report.Load(@"Reports\MyReport.rpt");
Я убедился, что после закрытия пользователем пользователь закрывает и удаляет отчетобъект документа отчета, поэтому нет утечек памяти или превышение максимального количества открытых отчетов.
Если я чизменил мою реализацию так, чтобы я сохранял отчеты в своем решении как встроенные ресурсы, проблема решена, но это не вариант, поскольку отчеты имеют относительно большой размер (200–450 КБ), это будет большой файл DLL, который будетзагружаться клиентам через ClickOnce каждый раз, когда мы выпускаем новую версию, в которой есть какие-либо изменения в любом отчете !.Другой вариант состоит в том, чтобы сгруппировать каждый, скажем, четыре отчета в одну DLL, и все та же проблема (1МБ-2МБ по-прежнему большой кусок).Зная, что у нас много отчетов, и мы получаем частый запрос на изменение этих отчетов в соответствии с изменениями в политиках наших клиентов.Пожалуйста, помогите!