Я создаю приложение Xamarin.Forms на основе проекта общего кода на C # и еще двух проектов для реального приложения Android + iOS.
Теперь я хочу реализовать локализацию строк, как это задокументировано здесь .Поэтому в своем решении для файла .resx я создал проект библиотеки стандарта .net 2.0 и сослался на этот проект в двух моих основных проектах, и, конечно же, я выполнил все остальные шаги, описанные в связанной статье.
Когда я теперь хочу получить доступ к любому из моих строковых ресурсов из одного из моих проектов приложения, ResourceManager.GetString
выдает это исключение: System.IO.FileNotFoundException: Invalid Image
Пример кода будет этой строкой, но это может быть также любой другой строковый ресурс.
public static string global_copyright {
get {
return ResourceManager.GetString("global_copyright", resourceCulture);
}
}
Я могу подтвердить, что сборка этого библиотечного проекта найдена и загружена правильно, поскольку я могу создавать экземпляры других классов, определенных в этом проекте.
Теперь я поместил этот коднепосредственно в начале конструктора App (), как описано в этой статье, для отладки таких проблем:
var assembly = typeof(AppResources).GetTypeInfo().Assembly;
foreach (var res in assembly.GetManifestResourceNames())
{
System.Diagnostics.Debug.WriteLine("found resource: " + res);
}
var test = AppResources.global_copyright;
Первые строки выполняются нормально, и это показывает, что в этом файле найден один файл ресурсов.сборка.Его имя тоже правильно.Но на последней строчке происходит сбой с этим исключением.Что я не прав?Почему ResourceManager не может загружать строковые ресурсы из этой сборки?
Visual Studio 2017 (15.9.6) с Xamarin.Forms v3.4