「onetnative.dll」をロードできません:指定されたモジュールが見つかりませんでした
質問
この疑問は次のような結果として生じます。 この質問, しかし、それを個別に分割しようと思いました。
使うものなら何でも SPUtility.GetGenericSetupPath()
null を返します。例:
SPUtility.GetGenericSetupPath("config")
SPUtility.GetGenericSetupPath(string.Empty)
どちらも null を返します。小さなコンソール アプリでこれらの呼び出しを行い、それを VS2008 でデバッグすると、(メソッドから null が返されても) 例外なく正常に実行されるように見えます。ただし、出力ウィンドウに次のメッセージが表示されることに気付きます。
Microsoft.SharePoint.dll でタイプ 'System.DllNotFoundException' の最初の例外が発生しました
したがって、Visual Studio がすべての例外 (処理された例外も含む) で中断する場合、例外は次のようになります。
System.DllNotFoundException:DLL「onetnative.dll」をロードできません:指定されたモジュールが見つかりませんでした。(HRESULT からの例外:0x8007007E)
確認したところ、onetnative.dll は C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\BIN に存在します。
解決 2
私が遡ることができる限り、これは間違ったバージョンの Microsoft J# のインストールが原因でした。
J# は、Citrix Web Interface for SharePoint Web パーツの前提条件です。間違って32bit版をインストールしてしまい、アンインストールして64bit版をインストールしてしまいました。(十分なテストに基づいていますが、100% 検証されたわけではありません)、これにより .NET/CLR アプリケーションがレジストリの 64 ビットではなく 32 ビット ノードを検索し始めたのではないかと私は推測しています。
他のヒント
onetnative.dll をコンソール アプリと同じ場所にコピーして、違いが生じるかどうかを確認してみます