为什么 Oracle 在 UWP 的 .net 标准中崩溃,但没有通知?



我创建了一个UWP程序,我必须从客户的Oracle数据库中获取数据。我的客户给了我一个他做的dll。我尝试并发现由 4.6.2 的 .net 框架制作,因此 UWP 不支持它。我建议他重写UWP的dll,但他拒绝了。所以我必须找到一种方法让它在 UWP 中工作。

我用谷歌搜索发现,如果我为 UWP 和 .net 框架之间的桥梁制作一个 .net 标准 dll,我可以让它在 UWP 中工作。

最后,我做了一个.net标准dll,在.net标准中,我引用了客户给出的dll。

但是在我调试了我的 .net 标准 dll 之后,我编写的所有代码都可以正常工作,但我的客户给出的 dll 抛出了一个错误:

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


我想知道我的客户的dll是否有问题。然而,这太奇怪了,如果我在 winform 中引用他的 dll,一切都很好,但只有在 .net 标准中它崩溃了。更重要的是,我在winform/.net标准中编写的代码是一样的,只是声明一个类并运行一个void,只是两行代码。

我的客户对 UWP 一无所知,我也对 Oracle 一无所知。我不想让 WPF 为此重写整个项目,这是一项如此巨大的工作!

你能教我这有什么问题以及如何解决我的问题吗?谢谢。

我想知道我的客户的dll是否有问题。

简而言之,客户的 .net 框架 dll 没有错误。您只是误解了 .NET 标准。您的 .NET 标准库在 winform 中工作,这是因为您的 .NET 标准库添加了对客户的 .net 框架 dll 的引用。此 .net framewrok dll 在 .net Framework 应用程序中运行良好,但这并不意味着 UWP 支持.net Framework dll 中的 API,即使您已使用 .NET 标准库来包装它。我建议您可以阅读介绍 .NET 标准以获取更多详细信息。

对于你的问题,如果你的客户不想重写其 dll,并且你也无法编写库来使其在 UWP 中工作。你可以做一个WCF。在 WCF 中,可以直接添加对客户的 dll 的引用。然后,可以直接在 UWP 中使用此 WCF 服务。