我想在Windows应用商店应用中使用C#.NET4库项目。因为我不能直接引用这个DLL,因为不支持的.NET版本,我正在考虑编写Windows Store App Library,它将包装对C#(.NET4)库的调用。关于如何实现这一目标的任何提示?
S.O.S
非常感谢!
答案 0 :(得分:1)
它不仅仅是包装和引用库,而是缺少运行时/框架的Windows应用商店版本中的一些基本类型,方法,扩展等,它们将禁止你从包装/链接完整的.NET 4库程序集。您无法为不兼容的平台构建/链接它,即使您可以构建它,它也不会在该平台的CLR上执行。由于您必须创建特定的Windows应用程序项目,因此Visual Studio会将对特定.NET框架的引用添加到您的项目中,并且在编译时,您甚至无法构建项目,因为.NET 4程序集将引用不在项目中的依赖项,也不与运行时目标兼容。
你的建议(包装)就像我说的那样#34;我有这个Windows库,我想在Linux上使用,我可以将调用包装在一个层中,然后在Linux上部署吗?"并且如果没有(1)仿真,或者(2)重新实现",答案将是" no。当然,CLR / .NET字节码比Linux与Windows更兼容,但概念仍然相同。一个版本的CLR / Framework!=另一个版本。目标运行时环境中缺少类型/库调用。
您可能需要创建相关库的替代实现。
我建议的最好的方法是使用像Reflector或dotPeek这样的工具来反编译.NET4程序集,并查看可以将多少内容粘贴到便携式或Windows应用商店应用程序项目中。请注意,如果这是第三方商业图书馆,您可能违反了许可协议,这取决于您。
使用本指南将缺少的部分替换为该平台的等效部分:http://msdn.microsoft.com/library/windows/apps/br230302.aspx#general
正如指南中所述,您还可以创建一个可移植类库项目来开发可以从Windows应用商店应用程序使用的.NET Framework库,但您仍然只能使用可移植的API子集。如果您使用Reflector进行上述方法,您可能会发现.NET 4程序集不使用任何重要的非可移植框架类型/引用,并且可以轻松地重新编译。另一方面,它也可能是相反的情况。