有沒有辦法使用強命名的程序集來代替非命名的程序集?強烈命名的程序集代替非命名的程序集
真正的問題是這樣的:
我創建一個庫(如: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