Почему Oracle падает в .net стандарте UWP, а winform нет? - PullRequest
0 голосов
/ 23 сентября 2018

Я создаю программу UWP, и мне нужно получить данные из базы данных Oracle моего клиента.Мой клиент дал мне dll, который он сделал.Я попробовал и обнаружил, что сделал .net framework из 4.6.2, чтобы UWP его не поддерживал.Я предложил ему переписать dll от UWP, но он отказался от этого.Поэтому я должен найти способ заставить его работать в UWP.Я погуглил и обнаружил, что, если я сделаю стандартную dll .net для моста между UWP и .net framework, я смогу сделать так, чтобы она работала в UWP.Наконец, я сделал dll стандарта .net, в стандарте .net я ссылаюсь на dll, который дал мой клиентНо после того, как я отладил свою стандартную dll .net, весь написанный код работает без ошибок, но dll, предоставленный моим клиентом, выдает ошибку:

"The type initializer for 'OracleInternal.Common.ProviderConfig' threw an exception."

Интересно, если что-то не так с dll моего клиента.Тем не менее, это так странно, что, если я ссылаюсь на его dll в winform, все в порядке, но только в стандарте .net он падает.Более того, код, который я написал в стандарте winform / .net, один и тот же, только объявляет класс и запускает пустой, просто двухстрочный код.Мой клиент ничего не знает о UWP, и я также ничего не знаю об Oracle. Я не хочу переписывать весь проект WPF только для этого, это такая огромная работа!Не могли бы вы научить меня, что с этим не так и как решить мою проблему.Спасибо.

1 Ответ

0 голосов
/ 28 сентября 2018

Интересно, что-то не так с dll моего клиента.

Короче говоря, в dll .net framework вашего клиента нет ошибки.Вы просто неправильно поняли .NET Standard.Ваша библиотека .NET Standard работала в winform, потому что ваша библиотека .NET Standard добавляет ссылку на DLL-библиотеку вашего клиента .net.Эта DLL-библиотека .net framewrok хорошо работает в приложениях .NET Framework, но это не означает, что API в DLL-структуре .net Framework поддерживаются в UWP, даже если вы использовали стандартную библиотеку .NET для ее переноса.Я предложил вам прочитать Представление .NET Standard для получения более подробной информации.

По вашему вопросу, если ваш клиент не хочет переписывать свою dll и вы также не можете написатьбиблиотека для работы в UWP.Вы можете сделать WCF .В WCF вы можете напрямую добавить ссылку на dll вашего клиента.Затем вы можете напрямую использовать эту службу WCF в вашем UWP.

...