0

名前のないアセンブリの代わりに厳密な名前のアセンブリを使用する方法はありますか?

本当の質問はこれです:

プラットフォーム (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 に答える