为什么Oracle在UWP的.net标准中崩溃但在Winform中不是这样?

时间:2018-09-23 01:50:01

标签: oracle uwp .net-standard

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

我在Google上搜索后发现,如果为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标准中编写的代码是相同的,只声明一个类并运行一个空的,只有两行代码。

我的客户对UWP一无所知,对Oracle也一无所知。我不希望仅用WPF重写整个项目,这是一个巨大的工作!

您能教我这是怎么回事以及如何解决我的问题。谢谢。

1 个答案:

答案 0 :(得分:1)

  

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

简而言之,客户的.net framework dll没有错。您只是误解了.NET标准。您的.NET Standard库在Winform中工作,这是因为您的.NET Standard库添加了对客户的.net Framework dll的引用。该.net framewrok dll在.net框架应用程序中可以很好地运行,但这并不意味着UWP支持.net框架dll中的API,即使您已经使用.NET标准库对其进行了包装。我建议您可以阅读Introducing .NET Standard了解更多详细信息。

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