Переносной конфигурационный файл Xamarin с использованием PCLAppConfig

#xamarin #xamarin.ios #xamarin.android

#xamarin #xamarin.ios #xamarin.android

Вопрос:

Я пытаюсь поместить файл конфигурации в часть PCL моего приложения для IOS / Android.

Документация по адресу:https://github.com/mrbrl/PCLAppConfig предлагает:

 Assembly assembly = typeof(App).GetTypeInfo().Assembly;
ConfigurationManager.AppSettings = new ConfigurationManager(assembly.GetManifestResourceStream("DemoApp.App.config")).GetAppSettings;
  

Я ожидаю, что DemoApp — это имя сборки их образца приложения, поэтому у меня есть:

использование PCLAppConfig;

 namespace LYG
{
    public class App : Application
    {
        public App ()
        {
            Assembly assembly = typeof(App).GetTypeInfo().Assembly;
            ConfigurationManager.AppSettings = new ConfigurationManager(assembly.GetManifestResourceStream("LYG.App.config")).AppSettings;
        }
...
    }    
}
  

Я получаю следующую ошибку компиляции:

/Users/greg/Projects/LYG/LYG/LYG.cs(122,122): Ошибка CS1061: введите ‘ PCLAppConfig.ConfigurationManager' does not contain a definition for GetAppSettings’ и нет метода расширения GetAppSettings' of type PCLAppConfig.Удалось найти ‘ConfigurationManager’. Вам не хватает ссылки на сборку? (CS1061) (LYG)

Это мой файл packages.config:

 <?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="PCLAppConfig" version="0.3.1" targetFramework="portable45-net45 win8 wp8" />
  <package id="PCLStorage" version="1.0.2" targetFramework="portable45-net45 win8 wp8" />
  <package id="Xamarin.Forms" version="2.3.2.127" targetFramework="portable45-net45 win8 wp8" />
</packages>
  

Я также пробовал со скобками:

             ConfigurationManager.AppSettings = new ConfigurationManager(assembly.GetManifestResourceStream("LYG.App.config")).AppSettings();
  

Почему не удается найти GetAppSettings?

Ответ №1:

Вам необходимо добавить пакет PCLAppConfig nuget в ваши проекты PCL и platforms.

Тогда, как я понимаю, вы пытаетесь использовать app.config на основе ресурсов; Я только что обновил документацию, чтобы отразить последнее обновление версии.

затем используйте:

 Assembly assembly = typeof(App).GetTypeInfo().Assembly;
ConfigurationManager.Initialise(assembly.GetManifestResourceStream("DemoApp.App.config"));
  

если сомневаетесь, проверьте демонстрационный проект на github : https://github.com/mrbrl/PCLAppConfig/tree/master/src/DemoApp