2010-11-15 4 views
3

У меня есть приложение WinForms, которое я пытаюсь развернуть с помощью ClickOnce. Он состоит из исполняемого файла и зависимой библиотеки dll, а также куча свободных XML-файлов в папке «Карта». Все XML-файлы кажутся присутствующими и правильными в сгенерированном пакете clickonce и все они включены в файл .manifest.Расположение пользовательских файлов с приложением ClickOnce

Однако, когда я установить и запустить, используя следующий код дает мне каталог не найден исключение:

string appPath = Path.GetDirectoryName(Application.ExecutablePath); 
string mapPath = Path.Combine(appPath, "Maps"); 
foreach (string xmlFile in Directory.GetFiles(mapPath, "*.xml")) 

, когда я смотрю в «AppPath» (который C:\Users\Mark\AppData\Local\Apps\2.0\0H6ZLXXN.30V\3TNO49OJ.8JH\midi..tion_5194807c0e95e913_0000.0004_b9d52c73fd4d58ad\), есть приложение исполняемый файл и dll, но папка Maps там отсутствует.

Что я делаю неправильно? Это правильный способ связать дополнительные файлы с моим приложением? Мне бы очень хотелось, чтобы папка Maps была где-то, где пользователь может легко получить доступ и добавить свои собственные файлы в любом случае.

ответ

11

ОК, в итоге я нашел фрагмент кода, который помог мне. Xml-файлы уже были помещены в каталог данных ClickOnce (это можно настроить с помощью кнопки «файлы приложений» на вкладке публикации диалогового окна параметров проекта. Затем вы можете получить в каталоге данных следующее:

private string GetDataDirectory() 
    { 
     if (ApplicationDeployment.IsNetworkDeployed) 
     { 
      return ApplicationDeployment.CurrentDeployment.DataDirectory; 
     } 
     else 
     { 
      return Application.StartupPath; 
     } 
    } 
+0

Я бы хотел, чтобы это было более очевидно. Спасибо за исправление! –

Смежные вопросы