0

ブラウザー (IE) で実行されている .NET ActiveX コントロールがあります。このコントロールは、ディスクへの書き込みが必要なログなどの機能を実行するために、他のライブラリ (これもサイトを介して渡されます) を呼び出します。これらの他のライブラリも IObjectSafety を実装する必要がありますか?

4

1 に答える 1

1

簡単な答えはノーです。公開されているアセンブリのみがこれを必要としているようです。

多くのデバッグの結果、私が抱えていた本当の問題は、クラスIDを使用してActiveXとしてインスタンス化されたときにActiveXライブラリが.NET依存関係パスを適切に解決しないことが原因であることが判明しました。ActiveXライブラリのコンストラクタに以下を追加することでこれを解決しましたが、正常に動作するようになりました。

public YourActiveXLibrary()
{
    AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(LoadInstallDependency);
}

private static Assembly LoadInstallDependency(object sender, ResolveEventArgs args)
{
    string installPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
    string dependencyPath = Path.Combine(installPath, new AssemblyName(args.Name).Name + ".dll");
    return File.Exists(dependencyPath) ? Assembly.LoadFrom(dependencyPath) : null;
}
于 2012-08-10T22:33:12.240 に答える