Не удается прочитать файлы в моем проекте после публикации настольного приложения publi sh WPF - PullRequest
1 голос
/ 06 августа 2020

У меня есть настольное приложение WPF. Когда я нахожусь в режиме отладки, я могу получить доступ к файлу. sql и прочитать его содержимое. Когда я публикую sh файл с помощью Visual Studio и пытаюсь запустить приложение «щелкнуть один раз», я не могу прочитать файл. sql файл, и приложение не может найти путь. Файл .cs, в который я вызываю, чтобы прочитать файл. sql находится в той же папке.

string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,@"..\..\ControlFolder","file.sql");
string readQuery = File.ReadAllText(path);

Как я могу убедиться, что я могу читать файл. sql после публикации моего приложения ?

1 Ответ

2 голосов
/ 06 августа 2020

Когда вы публикуете sh, вам необходимо убедиться, что вы также публикуете свой «файл. sql» по пути двоичного вывода. Лучше всего избегать использования относительных путей к исходному коду, и вместо этого вы всегда должны убедиться, что вы указываете файлы, которые вы (разработчик) гарантируете наличие в опубликованной области.

Вот что я бы сделал do:

  1. В Visual Studio, go в свойствах «file. sql» и убедитесь, что для него установлено «Содержимое» и «Копировать, если новее». Это гарантирует, что ваш «файл. sql» всегда будет существовать в пути двоичного вывода. Если в Visual Studio вы поместили «файл. sql» в папку с именем «ControlFolder», это означает, что содержимое двоичного вывода будет содержать файл «. \ ControlFolder \ file. sql».

  2. Исправьте код, чтобы он никогда не указывал на относительный путь к исходному коду. Вместо этого полагайтесь на путь двоичного вывода. Поэтому вместо кода, которым вы поделились, замените его следующим:

string path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), @"ControlFolder\file.sql");
string readQuery = File.ReadAllText(path);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...