С # опубликовать exe приложения Windows Form с данными папки

Я должен опубликовать приложение формы Windows на С #. Проблема в том, что у меня есть папка с именем "dati" в папке проекта.

В коде, когда я пытаюсь читать из папки, я использую эту инструкцию

string projectDirectory = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName;

и когда я пытаюсь прочитать xls внутри этой папки, у меня есть эта инструкция

       string path = projectDirectory + "\\dati\\dati.xlsx";
        string constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0 Xml;HDR=NO;\"";

При отладке все работает отлично, даже если я запускаю.exe внутри папки bin/Debug или bin/Release. Когда я публикую приложение и помещаю его в другую папку, например C:\ProjectPublished, я получаю эту ошибку, потому что оно пытается прочитать папку dati с другого пути.

Что я должен сделать? благодаря

2 ответа

Решение

Самый простой способ работы с файлами данных - включить их в проект как элемент содержимого. Щелкните правой кнопкой мыши файл *.xlsx в обозревателе решений и установите для действия сборки значение " Содержимое", а для " Копировать в выходной каталог" значение " Всегда". Это заставит механизм сборки включить файл данных в каталог /bin. Затем вам может потребоваться настроить механизм развертывания, чтобы включить этот файл в развертываемый пакет. Например, если вы используете ClickOnce, вам может потребоваться включить этот файл на вкладку "Опубликовать" вашего проекта.

Использовать этот:

string projectDirectory = AppDomain.CurrentDomain.BaseDirectory ;

Это даст вам каталог, в котором находится ваш исполняемый файл.

Другие вопросы по тегам