在Windows应用商店应用程序中使用C#4.0库

在Windows应用商店应用程序中使用C#4.0库,c#,dll,windows-runtime,windows-store-apps,C#,Dll,Windows Runtime,Windows Store Apps,我想在Windows应用商店应用程序中使用C#.NET4库项目。由于不支持.NET版本,我无法直接引用此DLL,因此我正在考虑编写Windows应用商店应用程序库,它将包装对C#(.NET4)库的调用。关于如何实现这一点有什么提示吗 S.O.S 非常感谢 这不仅仅是关于包装和引用一个库,而是关于运行时/框架的Windows应用商店应用程序版本中缺少一些基本类型、方法、扩展等,这将禁止您包装/链接完整的.NET 4库程序集。您将无法为它不兼容的平台构建/链接它,即使您可以构建它,它也不会在该平台的

我想在Windows应用商店应用程序中使用C#.NET4库项目。由于不支持.NET版本,我无法直接引用此DLL,因此我正在考虑编写Windows应用商店应用程序库,它将包装对C#(.NET4)库的调用。关于如何实现这一点有什么提示吗

S.O.S


非常感谢

这不仅仅是关于包装和引用一个库,而是关于运行时/框架的Windows应用商店应用程序版本中缺少一些基本类型、方法、扩展等,这将禁止您包装/链接完整的.NET 4库程序集。您将无法为它不兼容的平台构建/链接它,即使您可以构建它,它也不会在该平台的CLR上执行。由于您必须创建特定的Windows应用程序项目,Visual Studio会将对特定.NET framework的引用添加到您的项目中,并且在编译时,您甚至无法生成该项目,因为.NET 4程序集引用的依赖项不在项目中,也与运行时目标不兼容

你的建议(包装)就像我说的“我有这个Windows库,我想在Linux上使用,我可以将调用包装在一个层中,然后部署到Linux上吗?”答案是“没有(1)模拟,或者(2)重新实现,就不会”。当然,CLR/.NET字节码比Linux和Windows更兼容,但概念还是一样的。CLR/Framework的一个版本!=另一个版本。有些类型/库调用在目标运行时环境中完全缺失

相反,您可能需要创建相关库的替代实现

我建议最好使用Reflector或dotPeek之类的工具来反编译.NET4程序集,看看有多少可以粘贴到portable或Windows Store应用程序项目中。请记住,如果这是第三方商业图书馆,您可能会违反许可协议,这取决于您

使用本指南将丢失的零件替换为该平台的等效零件:


正如指南中所述,您还可以创建一个可移植类库项目,以开发一个可从Windows应用商店应用程序使用的.NET Framework库,但您仍然限于可移植API的子集。如果使用Reflector采用上述方法,您可能会发现.NET4程序集没有使用任何重要的非可移植框架类型/引用,并且可以轻松地重新编译。另一方面,情况也可能相反。

谢谢你的回答。事实上,所讨论的库是我自己的,所以我有源代码,但当我尝试重新编译时,我失败了,因为它非常复杂,并且有很多依赖项。此外,使用Portable library实际上只剩下“重写”所有内容的选项,因为Portable LIB只能引用Portable LIB。有趣。我可能会建议你采取一种缓慢、有条理的方法,如果有意义的话,把你的库分解成子库。然后,在.NET4.0下完成此操作后,请尝试一次移植一个端口。有时,一次移动一大块代码可能会让人不知所措,使您处于对编译错误做出响应而不是重新处理问题的状态。