Какова наилучшая практика в отношении путей при работе в разных средах OS (Xamirin/Android, Windows, Web)?

В настоящее время я работаю над простым приложением Xamarin-Android, которое повторно использует библиотеки классов С#, которые были встроены в.NET 4.5. Эти библиотеки распространены между Android и Windows и веб-службами в настоящее время.

следующие - пути, указывающие на файл текстового ресурса,

Рабочий стол Windows: AppDomain.CurrentDomain.BaseDirectory + @"\ resource.txt

Служба Windows: AppDomain.CurrentDomain.BaseDirectory + @"bin\resource.txt

Android: "/data/data/My.App.Folder/resource.txt" (Также в xamarin, каков способ получить папку приложения? В настоящее время AppDomain.CurrentDomain.BaseDirectory уступает null)

Проблема заключается в том, что пути различны в разных средах.

Какая была бы лучшая практика для решения этой проблемы?

2 ответа

В Android-приложениях развертывается APK. Вы не можете получить доступ к файлам, развернутым с помощью приложения, непосредственно через файловую систему (все в APK). Вам нужно работать со встроенными ресурсами


Если ваше правило "мои файлы текстовых ресурсов находятся в том же каталоге, что и приложение", то это может быть то, что вы хотите:

new FileInfo( 
 new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath 
 )
 .Directory
 .FullName

Хотя в этом случае вы не можете включать текстовые файлы в DLL в качестве встроенных ресурсов?

Так или иначе; Я не думаю, что Framework или среда выполнения расскажут вам, каковы ваши пути; вам придется это рассказать. Поэтому я создам конфигурацию конфигурации/конфигурации для каждой платформы развертывания.

licensed under cc by-sa 3.0 with attribution.