有没有办法使用强命名的程序集来代替非命名的程序集?强烈命名的程序集代替非命名的程序集
真正的问题是这样的:
我创建一个库(如:SqliteOrm.dll)(便携式类库在我的实例,通过这个问题是与任何类型)引用另一个库(例如:系统.Data.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上使用我自己的版本。我的版本只包含必要的类型,所以它在这种方式上有所不同。
我目前正在使用地铁和桌面应用程序进行测试,这是发生异常的地方。我隐约想起了一些事实,即M4A运行时并未实际执行检查,但我希望我的库也能在桌面上工作。
有没有人对我有任何提示,或者这是一个不好的做法?
没有强名的System.Data来自哪里?另外:哪些平台在这里有问题?如果它只是桌面,正在处理AppDomain.AssemblyResolve一个选项? *个人*(基于我自己的多平台库经验),我怀疑你会发现拥有每个平台的构建更容易,只需引用相应的dll。通过NuGet部署,这也很容易实现自动化。 – 2012-07-18 19:53:23