したがって、COM経由でインタフェースされるC#ライブラリを作成しています。このライブラリはログの目的でlog4netを使用します。今、このCOMライブラリは、インストールされているバージョンのlog4netの異なるバージョンをロードする必要があります。そのため、インストールされているディレクトリにlog4netのバージョンがあればロードするようにしています。今私はBindingRedirectsの使い方に慣れていますが、以前はライブラリで使ったことがないので、どうやってどうやって知ることができません。 StackOverflowで '関連する'質問を探す私は、アセンブリの読み込みを制御するためのソリューションを見つけました。ここに私が試したことの例があります。COMライブラリで使用できるライブラリのバージョンをロードする
Assembly assembly = null;
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
string name = new AssemblyName(args.Name).Name;
if (name.Equals("log4net"))
{
return assembly;
}
return null;
};
assembly = Assembly.LoadFrom("log4net.dll");
特定のバージョンが参照されないようにcsprojを編集しました。
ファイルまたはアセンブリ「log4netの、バージョンをロードできませんでした= 1.2.10.0:
<Reference Include="log4net"> <HintPath>..\packages\log4net.1.2.10\lib\2.0\log4net.dll</HintPath> <SpecificVersion>False</SpecificVersion> </Reference>
しかし、私は、私はこの例外を取得します(私は上記のコードのいくつかのバリエーションを試してみた)何をするかは問題ではありませ、 文化=ニュートラル、PublicKeyToken = 1b44e1d426115821 'またはその の依存関係の1つ。見つかったアセンブリのマニフェスト定義では、 がアセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)
私がここで達成しようとしていることは可能だと感じていますが、私はそれを間違った方法で行っています。私はまた、BindingRedirectsをそのように適用することができれば、ライブラリに特化したapp.configファイルを使用する方法を解決します。良いか悪いかにかかわらず、誰かがこれに関して持っているアドバイスに感謝します。