在Windows应用商店应用中使用旧版dll(.NET)?

时间:2012-07-25 15:41:26

标签: c# .net windows-8 windows-store-apps

我开始着手移植我为在Windows 8应用商店中部署而编写的应用程序。这要求应用程序是针对.NET框架的子集编写的。我的应用程序遵循一个体系结构,其中核心功能在其自己的dll中,文件系统访问之类的事情是通过IoC完成的。基本上,这意味着核心dll的唯一依赖是System。因此,我认为移植将是轻而易举的 - 设置我的IoC值并连接GUI然后我会很高兴。只是,我甚至无法从windows商店应用程序(a.k.a. metro应用程序)中引用我的核心dll。

我错过了什么吗?实际上是否必须重写我的核心DLL只是为了包含在Windows 8应用程序商店?我们被告知,如果你使用一个好的架构,那么移植将是轻而易举的,这就是我所做的。那只是一个大谎言?

3 个答案:

答案 0 :(得分:4)

Windows商店应用程序(以前称为metro风格应用程序)仅限于使用.NET Core Profile。我在answer to this question中提供了有关核心配置文件的一些详细信息。请参阅转换现有.NET Framework代码in this article的更多详细信息。它不是您的架构,它是Windows商店应用程序可用的.NET Framework的子集。您可能必须使用WinRT类型补充您在.NET中使用的某些类型。

答案 1 :(得分:1)

我没有广泛的知识,并会在我理解的情况下试图扼杀事实。 Metro框架增加了功能,并限制了功能。有严重的安全限制和完整的.Net框架的大部分不可用(例如,您不能使用System.Data,一些System.IO和文件访问方法已经彻底改变)。 Metro应用程序是孤立的,您无法像在标准应用程序中那样递归硬盘驱动器上的所有文件(我认为,除了隔离安全性之外,它是鼓励您进入云存储需求)。

除非事情发生变化,否则PInvoke仅限于“已批准”的Win32 API方法。

有关常见Win32 API需求的一些替代方法,请参阅此链接:http://msdn.microsoft.com/en-us/library/windows/apps/hh464945.aspx

请参阅此链接以获取已批准的Win32 / COM API:http://msdn.microsoft.com/en-us/library/windows/apps/br205762.aspx

很难说在不知道该架构的代码中有什么内容的情况下,“好”架构是否轻而易举。在我的实用程序框架中,我有很容易移植的东西(或者至少是直截了当的)以及需要大量重写的完全清洗的东西(例如,丢失System.Data对我来说是一个痛处)。有些东西可以很好地设计,但是当您在框架或API中取出底层代码时,它需要重写。

答案 2 :(得分:0)

我遇到了同样的问题:Metro应用程序的项目没有加载带有框架的dll创建.4。我将框架从4改为3.5为dll,现在Metro项目看到了它们。