Расположение пользовательских файлов с приложением ClickOnce - PullRequest
4 голосов
/ 15 ноября 2010

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

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

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, но папка "Карты" там нет.

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

1 Ответ

12 голосов
/ 16 ноября 2010

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

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