У меня есть библиотека. NET Standard 2.0, написанная на C#, разработанная с VS2019. Он содержит растущее число файлов активов в подкаталоге, которые содержат дополнительную информацию о том, что может сделать пользователь. Файлы помечаются как Контент и копируются, если они более новые. Если ОС позволяет, пользователь должен иметь возможность редактировать эти файлы с помощью стороннего приложения и добавлять новые файлы.
В конструкторе stati c этой библиотеки я открываю каталог и анализирую все файлы:
public class xyz
{
static xyz()
{
string[] files = Directory.GetFiles("./Library", "*.xml");
foreach (string xmlFile in files)
{
// Open file
XmlDocument xml = new XmlDocument();
xml.Load(xmlFile);
// Do something with these files...
}
}
// More stuff (it's not a static class)
}
Если я включу эту библиотеку в приложение WinForms, она отлично работает. Файлы копируются в соответствующий подкаталог приложения, как и ожидалось, и могут быть проанализированы.
Однако, когда я включаю его в приложение Xamarain.Forms, на Android я получаю исключение: System.TypeInitializationException: 'инициализатор типа для' xyz 'вызвал исключение.'
Больше никакой отладочной информации нет, и поэтому я не могу определить точную точку, где выдается исключение. Однако консоль содержит следующий вывод:
03-18 15: 02: 42.118 D / Mono (26603): поиск DllImport в: 'libmono-native.so' ('./libmono-native .так'). 03-18 15: 02: 42.118 D / Mono (26603): выполняется поиск 'SystemNative_GetReadDirRBufferSize'. 03-18 15: 02: 42.118 D / Mono (26603): проверка 'SystemNative_GetReadDirRBufferSize'. 03-18 15: 02: 42.118 D / Mono
(26603): найдено как «SystemNative_GetReadDirRBufferSize». 03-18 15: 02: 42.122 D / Mono (26603): поиск DllImport в: 'libmono-native.so' ('./libmono-native.so'). 03-18 15: 02: 42.122 D / Mono (26603): выполняется поиск «SystemNative_OpenDir». 03-18 15: 02: 42.122 D / Mono (26603): проверка 'SystemNative_OpenDir'. 03-18 15: 02: 42.122 D / Mono (26603): найдено как «SystemNative_OpenDir». 03-18 15: 02: 42.126 D / Mono (26603): поиск DllImport в: 'libmono-native.so' ('./libmono-native.so'). 03-18 15: 02: 42.126 D / Mono (26603): выполняется поиск 'SystemNative_ConvertErrorPalToPlatform'. 03-18 15: 02: 42.126 D / Mono (26603): проверка 'SystemNative_ConvertErrorPalToPlatform'. 03-18 15: 02: 42.126 D / Mono
(26603): найдено как 'SystemNative_ConvertErrorPalToPlatform'.
Я подозреваю, что это связано с тем, как обрабатываются каталог и файлы Android.
Вопрос: Как я могу включить требования из первого абзаца таким образом, чтобы это было совместимо с библиотекой, используемой в Windows и Xamarin.Froms / Android
Обновление 2020/03/27: причина в том, что файлы содержимого не были скопированы в проект Android. Это уже решено. Новая проблема заключается в том, что, хотя файлы присутствуют в каталоге сборки, путь "./Library" не существует в приложении Android. Поскольку все это происходит в разделяемой библиотеке. NET, я не могу просто поместить эти файлы как активы в проект Android и получить к ним доступ с помощью хорошо известных механизмов. Как я могу изменить общую библиотеку так, чтобы она могла обращаться к своим файлам активов?