我开发了一个使用 .net 4.0 客户端配置文件 (CP) 的 .dll。但是,我也有一个 .dll,我想将它与我的 .dll 链接,并且另一个 .dll (DotNetOpenAuth) 与客户端配置文件不兼容,因为它使用 System.Web。
我知道您不能在 CP 兼容项目中引用非 CP .dll。问题是我该怎么做:) 我知道很多事情乍一看是不可能的,但有一些调整?..
我不明白为什么编译器没有给我警告说我的目标为 CP 的项目链接非 CP .dll。如果它以这种方式工作,我将能够拥有在大多数情况下都可以使用的 CP 兼容的 .DLL,除非调用了使用 DotNetOpenAuth 的功能。
简而言之,我想将 CP 兼容性检查从编译时移到运行时。这是因为我的 .dll 有很多功能,大多数人永远不会使用需要 DotNetOpenAuth 的那部分。那些需要 DotNetOpenAuth 的人必须使用完整的 .net 框架。但这绝不能成为其他人的阻碍。
我的意思是 AllowPartiallyTrustedCallersAttribute 之类的东西,它允许您将一些编译时检查移至运行时。
我不想维护 .dll 的两个单独版本(一个用于 Web 应用程序,另一个用于客户端配置文件),因为它增加了用户选择 .dll 的复杂性。我宁愿保持简单。
当然,有一种通过反射动态加载 .dll 的方法,但这需要运行代码具有相当高的权限(如果是 Web 应用程序,它们可能没有足够的权限)。