где находится правильное местоположение папки Data в процессе разработки C# deskTop app - PullRequest
1 голос
/ 01 февраля 2020

я пишу настольное приложение в C# .... это приложение будет автоматически генерировать код C / C ++ для встроенного системного проекта
, поэтому мне нужно скопировать некоторые pre_writen драйверы в целевой папка (где генерируется файл)

проблема в том, что я не знаю, где я могу правильно поместить кислый c драйвер !!

на данный момент я помещаю исходный драйвер в проект Foldr и повторяю его в своем коде быть в C: \ ProgramData но для разработки, где будет находиться местоположение?

Ответы [ 3 ]

0 голосов
/ 01 февраля 2020

Это в основном вопрос того, как часто данные будут меняться. И как это будет взаимодействовать с очень строгим управлением правами записи, так как NTFS стала распространенной (хотя правило предшествует NTFS, в основном FAT - и, следовательно, нет прав, чтобы остановить нас - мало кто из программистов заботился).

Вы можете и даже следует поместить материал в сам каталог Programm, , если , то он не изменяется вне обновлений / переустановок программы. Если он изменяется только с помощью Installer или Updater - вещи, которые в любом случае нуждаются в административных правах для своей работы, - он принадлежит там.

Если изменения происходят чаще, чем это - особенно вещи, которые могут изменяться во время выполнения или даже должны меняться во время выполнения - когда папка программы становится непригодной для использования. В этом случае в каталоге программы должен быть файл шаблона. Что-то, что вы можете скопировать в настоящий каталог в качестве базового уровня, чтобы было с чем начать работать. Что касается места размещения этих изменяемых данных, посмотрите на перечисление SpecialFolders . Userprofile - особые папки Appdata - это то, на что стоит обратить внимание. Вопрос о том, какой c использовать, зависит от того, как вы хотите, чтобы он взаимодействовал с синхронизацией контроллера домена (роуминг против пользователя без роуминга). Или, если вы хотите, чтобы он оказался в Common.

Драйверы звучат как тот редкий случай, когда каталог программ полностью соответствует. При желании драйверы могут быть установлены как параллельное приложение. То, что может управляться / обновляться отдельно и является просто требованием для вашей программы. Что-то, что может быть общим для нескольких приложений.

0 голосов
/ 01 февраля 2020

In Windows there are different types of data that may be consumed by an Application such as

  • Свойства приложения

    Настройки приложения позволяют динамически хранить информацию о приложении. Настройки позволяют хранить на клиентском компьютере информацию, которая не должна быть включена в код приложения.

    Пример: Положение, шрифт, стили, конфигурация пользователя
    Тип файла: App.Config (создается во время разработки и по умолчанию помещается в папку BIN) и User.Config (создается во время выполнения)
    Проект> Добавить новый элемент> Установлено> Визуальный C# Элементы> Файл конфигурации приложения


  • Данные приложения

    Содержит все данные, настройки и пользовательские файлы, необходимые для установленного программного обеспечения и приложений UWP. Это пользовательские данные c.

    Пример: Изображения, ресурсы, спрайты, шаблоны данных, текстовые файлы. Он также может содержать файлы App.Config

    Расположение файла: C:\ProgramData Environment.SpecialFolder.CommonAppData


  • Данные пользователя

    Содержат все данные, определенные пользователем c, такие как его / ее параметры приложения c.

    Пример: Любой тип данных

    Расположение файла: C:\Users\[USERNAME]\AppData\Roaming Environment.SpecialFolder.AppData или Environment.SpecialFolder.MyDocuments


я собираю эту папку в уровень продукта будет в C: \ ProgramData, но для разработки, где будет находиться местоположение?

да, это будет go для ProgramData, но во время разработки вы можете сохраните его в папке BIN или в каталоге по вашему выбору, если это имеет значение

Однако большинство из вышеперечисленных проявится, когда вы упакуете свое приложение в MSI и упакуете все зависимости файлы и где они должны go.



РЕДАКТИРОВАТЬ

На основе разъяснения ОП в комментарии, CPP файлы l автоматически go в папку BIN/Debug вашего приложения C#.
Вам нужно будет динамически помещать диски вашего устройства в каталог, в котором запущен ваш exe

, чтобы получить доступ к каталогу, в котором ваш приложение работает:

string exePath = System.Reflection.Assembly.GetExecutingAssembly().Location Вывод пути = Абсолютный путь, где работает ваш exe C:\Users\User1\source\repos\Test\Test\bin\Debug\Test.exe

string exeDirectory = Path.GetDirectoryName(exePath); Путь к каталогу, где находится ваш exe C:\Users\User1\source\repos\Test\Test\bin\Debug

0 голосов
/ 01 февраля 2020

Местоположение по умолчанию в приложении c# dekstop в Environment.CurrentDirectory + "\\Folder"

...