0

有没有办法使用强命名程序集代替未命名程序集?

真正的问题是:

我正在创建一个引用另一个库(例如:System.Data.dll)的库(例如:SqliteOrm.dll)(在我的实例中是可移植类库,问题是任何类型),这取决于平台(iOS, Android、WP、桌面和 WinRT)。这个库 (SqliteOrm.dll) 然后由每个平台的应用程序使用,但会切换 System.Data.dll。

然而,System.Data.dll 以强名称存在于 GAC 中。这会在使用库时导致异常:

System.IO.FileNotFoundException: 
Could not load file or assembly 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. 
The system cannot find the file specified.

我这样做的原因是因为 System.Data.dll 在 WP 中不存在,但在 M4A 中存在。我在 M4A 上使用本机 System.Data.dll,但在 WP 上使用我自己的版本。我的版本只包括必要的类型,所以它确实有所不同。

我目前正在使用 Metro 和桌面应用程序进行测试,这就是发生异常的地方。我隐约记得 M4A 运行时实际上并没有进行检查,但我希望我的库也可以在桌面上工作。

有没有人对我有任何提示,或者这整件事是一个不好的做法?

4

1 回答 1

0

考虑在任何地方使用您自己的 System.Data。可能比其他任何事情都少很多痛苦。

这里有一些建议:http ://www.simple-talk.com/blogs/2007/08/30/strong-naming-remoting-nothg-but-ye-liveliest-awfulness/

然后是疯狂的方法:它实际上可以将您的程序集设置为由 MS 密钥延迟签名,然后在安装时将程序集注册为延迟签名程序集(在 WP 上)。当然,现在您需要管理员权限才能安装,并且可能会让任何期望在 WP 上获得更健全的 System.Data 的人感到困惑。

于 2012-07-18T19:41:53.537 回答