さて、大量の調査を行い、見つけることができるほぼすべての管理された CPP Redist を試し、DLL をアプリの実行ディレクトリにローカルにコピーしようとした後、この混合モード ライブラリに欠けている依存関係を特定できません。
基本的に、大規模な C# アプリケーションがあり、作成した混合モード ライブラリを使用しようとしています。開発マシンでは (もちろん) 完璧に動作しますが、CRT の依存関係がないために例外を使用するためにライブラリをロードする必要がある場合に展開されます (私は推測します)。
依存関係ウォーカーを使用して、参照されているすべての DLL をチェックし、それらが展開マシン上に存在することを確認しました。 .
コードが混合モード ライブラリからクラスをインスタンス化しようとすると、次の例外が発生します。
例外の詳細: System.IO.FileLoadException: ファイルまたはアセンブリ 'USADSI.MAPI、Version=1.0.3174.25238、Culture=neutral、PublicKeyToken=null' またはその依存関係の 1 つを読み込めませんでした。アプリケーションの構成が正しくないため、このアプリケーションを開始できませんでした。アプリケーションを再インストールすると、この問題が解決する場合があります。(HRESULT からの例外: 0x800736B1)
/clr:oldSyntax を指定して VS2008 SP1 を使用してライブラリをコンパイルしています。
中間マニフェストは次のようになります。
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
</assembly>
必要に応じてさらに情報を提供できますが、残念ながら私は混合モード ライブラリの作成に精通していないため、これは私を失望させました。
誰かがアドバイスを提供できれば、私は非常に感謝しています!