22

我正在开发一个 Windows 商店应用程序项目,我想从 National Instruments DAQ 读取简单的温度测量数据。但是,DAQ 的 DLL 库采用 .NETFramework 4.0 格式,当将其添加为我的 windows 商店应用程序项目的引用时,我收到以下错误:“项目以 '.NetFramework' 为目标,而文件引用以 '.NetCore' 为目标”

在网上搜索,我发现 Windows 商店应用程序只能使用对另一个 .NETCore 或 Portable Library 二进制文件的引用,它不能引用完整的 .NET 4.0 库。我想有很多人有类似的问题,所以我想知道是否有任何绕行技巧?

4

2 回答 2

12

如果您坚持使用其他人提供的库,并且如果试图游说他们制作可移植版本的尝试不太可能成功,那么您唯一能做的就是找到其他地方来托管 DLL,然后进行通信无论是托管它。例如,对于某些场景,可以编写一个基于 ASP.NET Web API 的服务,该服务将能够使用完整的 .NET Framework,从而能够使用 DLL。

显然,这以一个问题换另一个问题:您现在需要一台可以为您运行 Web 服务的机器。(不幸的是,我相信微软并不正式支持在运行 Windows Store 应用程序的同一台机器上运行该 Web 应用程序。您也许可以让它在您的开发盒上运行,但您将无法部署Web 应用程序本身通过 Windows 应用商店。)

而且这里没有简单的路径 - 您必须编写一个层,通过 HTTP 服务公开您需要的所有内容,以及使用这些服务的客户端代码。您还需要考虑如何保护对服务的访问。

向您的供应商恳求可能更容易......

从理论上讲,如果库没有使用核心 .NET 配置文件之外的任何内容,那么您可以使用 ILDASM 和 ILASM 反编译和重新编译代码,在这样做之前将其转换为可移植库. 但是,如果它是商业代码,这很可能会违反您的许可协议,并且在任何情况下都很可能不起作用。

于 2013-02-05T14:58:37.393 回答
9

“解决方法”是创建一个您想要作为可移植库的库版本。这里的所有都是它的。您根本没有可用的完整框架。

将类库转换为可移植类库所涉及的困难在很大程度上取决于该库的功能以及它使用 BCL 的哪些区域。

于 2013-02-05T13:43:55.313 回答