ネイティブ C アプリケーションから呼び出された混合モード DLL の読み込みに失敗しました: タイプ 'System.IO.FileLoadException' の未処理の例外が不明なモジュールで発生しました。
追加情報: ファイルまたはアセンブリ 'XXSharePoint, Version=0.0.0.0, Culture=neutral, PublicKeyToken=e0fbc95fd73fff47' またはその依存関係の 1 つを読み込めませんでした。最小限の権限リクエストを許可できませんでした。(HRESULT からの例外: 0x80131417)
私の環境は次のとおりです。混合モードの C++ DLL を呼び出し、C# DLL をロードするネイティブ C アプリケーション。ローカル ドライブからロードすると正しく動作しますが、ネットワーク ドライブから起動すると、上記のメッセージで失敗します。
LoadLibrary の呼び出しは成功し、GetProcAddress も成功します。関数を呼び出すとロードエラーが発生します。
C アプリケーションにデジタル署名し、2 つの DLL に対して "厳密な名前" 署名を実行しました。上記のメッセージの PublicKeyToken は、指定された DLL と一致します。また、クライアントで CASPOL コマンドを発行して、その厳密な名前のキートークンに FullTrust を付与しました。それがうまくいかなかったとき、ネットワーク ドライブの URL (アプリケーションのディレクトリへのパスを含む) に FullTrust を許可する CASPOL コマンドを試しました。結果に変化なし。
最初の混合モード DLL だけが存在するように、すべての依存関係を削除しようとしました... すべての関数の本体を、「成功した」整数値の戻り値に置き換えました。結果は変わりません。混合モードから Win32 に変更し、構成プロパティ >> 一般 >> 共通言語ランタイム サポートを「共通言語ランタイム サポート」から「共通言語ランタイム サポートなし」に変更した場合にのみ、DLL を呼び出すと期待どおりの結果が得られました (ちょうど「成功」整数の戻り値を返しました)。