ライブラリに依存関係を埋め込んだac# ライブラリ (ライブラリ スコープは Google 連絡先 API との通信) を作成したい。
したがって、クラスコンストラクターに次のコードを配置します。
AppDomain.CurrentDomain.AssemblyResolve += (sender, evento) =>
{
var assemblyName = evento.Name.Split(',')[0].Trim();
if (assemblyName.ToLower().Equals("google.gdata.contacts"))
return Assembly.Load(Assembly.GetExecutingAssembly().GetEmbeddedResource("Contacts.Assembly.Google.GData.Contacts.dll"));
else if (assemblyName.ToLower().Equals("google.gdata.client"))
return Assembly.Load(Assembly.GetExecutingAssembly().GetEmbeddedResource("Contacts.Assembly.Google.GData.Client.dll"));
else if (assemblyName.ToLower().Equals("google.gdata.extensions"))
return Assembly.Load(Assembly.GetExecutingAssembly().GetEmbeddedResource("Contacts.Assembly.Google.GData.Extensions.dll"));
else if (assemblyName.ToLower().Equals("newtonsoft.json"))
return Assembly.Load(Assembly.GetExecutingAssembly().GetEmbeddedResource("Contacts.Assembly.Newtonsoft.Json.dll"));
return null;
};
このようにして、AppDomainが Google 連絡先ライブラリまたはその依存関係を解決しようとすると、埋め込まれたアセンブリが返されます。この作品!!!
私の問題は、このコードを呼び出すときです:
RequestSettings settings = new RequestSettings("ApplicationName");
ContactsRequest cr = new ContactsRequest(settings);
Feed<Google.Contacts.Contact> f = cr.GetContacts();
このコードは RequestSettings (このクラスは google.data.client.dll にあります) でも同様に機能しますが、ContactRequest インスタンス (このクラスは google.data.contacts.dll にあります) を作成しようとすると、「MissingMethodException」が発生します。
コードがこのエラーを返すのはなぜですか?