Я пытаюсь скомпилировать мой код (консольное приложение ядра .net) в собственный .exe для win-x64, используя CoreRT .Я мог следить за документацией вплоть до раздела, касающегося отражения и использования файла rd.xml, в котором я сейчас застрял.
Мой проект использует Dapper в качествеORM, который опирается на отражение, чтобы связать объекты из моей базы данных.У меня есть только 2 разных типа, которые я связываю, поэтому я предполагаю, что мне нужно включить эти типы в rd.xml.
Прямо сейчас, когда я пытаюсь запустить dotnet publish -r win-x64 -c release
из ядра .netcli, он успешно завершается, однако во время выполнения мой скомпилированный файл .exe создает исключение со следующим фрагментом:
---> (Внутреннее исключение # 0) System.TypeInitializationException: инициализатор типа бросилисключение.Чтобы определить, какой тип, проверьте свойство StackTrace InnerException.---> EETypeRva: 0x01202268 (System.Reflection.MissingRuntimeArtifactException): этот объект не может быть вызван, поскольку для него разрешен только метаданные: «Dapper.SqlMapper.TypeHandlerCache.SetHandler (Dapper.SqlMapper.ITypeHandler) 'Для получения дополнительной информации, пожалуйста, посетите http://go.microsoft.com/fwlink/?LinkID=616867
Мой файл rd.xml выглядит так:
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
<Application>
<Type Name="Dapper.SqlMapper.TypeHandlerCache{System.Data.DataTable}">
<MethodInstantiation Name="SetHandler" Arguments="Dapper.SqlMapper.ITypeHandler" Dynamic="Required" />
</Type>
</Application>
</Directives>
Полагаю, мне нужночтобы включить сюда ссылки на мои модели, которые будут Foo
и Bar
, но возникающая ошибка относится именно к Dapper.
Файл rd.xml находится внутри моего каталога проекта и на него ссылаются вMyProject.csproj, например, так:
<ItemGroup>
<EmbeddedResource Include="rd.xml" />
</ItemGroup>
Мне интересно, связана ли эта проблема с моей структурой (возможно, на файл rd.xml следует ссылаться по-другому), илииз-за содержимого моего файла rd.xml.Кто-нибудь имел дело с этим или использовал CoreRT в проекте, который использует Dapper?