Member 11727674 Ответов: 1

Форматы URI не поддерживаются C#


Я запрограммировал приложение на языке c# и хочу удалить файл базы данных, который находится в папке Bin/Debug, и скопировать в него другую базу данных.но когда я хочу это сделать, у меня есть исключение, форматы URI не поддерживаются.вот мой код:
 string FileToReplace = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), "bazarganidb.db");
               File.Delete(FileToReplace);
               string OriginalFile =@"D:\bazarganidb.db";
               if(File.Exists(FileToReplace))
               File.Delete(FileToReplace);
               File.Copy(OriginalFile, FileToReplace,true);
              }
           catch (Exception k)
           {
               MessageBox.Show(k.Message);
           }


Что я уже пробовал:

я попробовал это сделать :
string FileToReplace = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(
 System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), "bazarganidb.db");
    
string localPath = new Uri(FileToReplace).LocalPath;

но это не работает

Karthik_Mahalingam

поместите точку останова и посмотрите, какое значение вы получаете FileToReplace

вы удаляете файл без проверки пути.

 File.Delete(FileToReplace); // line 3

1 Ответов

Рейтинг:
0

OriginalGriff

Без вашего кода, работающего в вашей системе, мы ничего не можем сделать, чтобы помочь - мы понятия не имеем, какие пути собираются здесь, но ... если вы посмотрите на определение свойства Codebase: Имя сборки.Свойство Кодовой Базы (System.Отражение)[^] это ясно говорит::

Цитата:
Возвращает или задает расположение сборки в виде URL-адреса.
Начиная С Файла.Удалить и файл.Копирование не принимает пути на основе URL-адресов, Вам понадобится лучшая система.

Честно говоря, вы храните БД в совершенно неправильном месте: исполняемые сборки обычно хранятся в папке app (которая в производстве обычно находится в разделе "Program Files") или в каталоге Windows. И оба они обычно требуют доступа администратора для изменения любых файлов по соображениям безопасности. И это oftens означает, что приложение терпит неудачу в производстве, но работает в разработке.
Вы можете посмотреть здесь: Где я должен хранить свои данные?[^] - это наводит на мысль о лучших местах.