将.NET Framework DLL添加为Windows Store应用程序的引用

23

我正在开发一个Windows存储应用程序项目,想要从National Instruments DAQ读取简单的温度测量数据。但是,DAQ的DLL库以.NETFramework 4.0格式存在,当将其作为参考添加到我的Windows存储应用程序项目中时,我收到以下错误提示:"The project targets ‘.NetFramework’ while the file reference targets ‘.NetCore’"

通过搜索网络,我发现Windows存储应用程序必须仅使用对另一个.NETCore或可移植库二进制文件的引用,无法引用完整的.NET 4.0库。我猜有很多人遇到了类似的问题,所以我想知道是否有任何技巧可以解决这个问题?

2个回答

13
如果您被迫使用由其他人提供的库,而游说他们制作便携式版本的尝试很可能不会成功,那么您唯一能做的就是找到另一个地方来托管DLL,然后与托管它的内容进行通信。例如,对于某些情况,可能可以编写基于ASP.NET Web API的服务,该服务将能够使用完整的.NET Framework并因此能够使用DLL。
显然,这是用一个问题换取了另一个问题:现在您需要拥有一台可以为您运行Web服务的计算机。(不幸的是,我认为Microsoft没有正式支持在运行Windows Store应用程序的同一台计算机上运行该Web应用程序。您可能可以使其在您的开发框中工作,但您将无法通过Windows Store部署Web应用程序本身。)
这里没有容易的解决方案-您将不得不编写一层通过HTTP服务公开所需内容的代码,并编写客户端代码以消费这些服务。您还需要考虑如何保护对服务的访问安全。
与您的供应商交涉可能更容易...
理论上,如果库没有使用核心.NET框架之外的任何东西,那么您可以使用ILDASM和ILASM将代码反汇编和重新编译,在此之前将其转换为便携式库。但是,如果它是商业代码,那么这很可能会违反您的许可协议,并且无论如何很可能不起作用。

我只想说,感谢您清晰的回答,即使这已经是3年前的事情了。 - jermey

9
“解决方法”是将您需要的库创建为可移植库的版本。这就是全部内容。您只是没有完整的框架可用。
将类库转换为可移植类库所涉及的难度取决于库的功能以及它使用的BCL的哪些区域。

2
谢谢您的快速回复!我已经研究了可移植类库,但在这种情况下,我无法访问完整的库源代码,只有 DLL 文件。 - Zyberb
2
这怎么是一个“变通方法”,而不是正式的做事方式? - ken2k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接