21

最近、Vista/32からWin7/64にアップグレードしました。私の古いマシンでは、すべてが正常に機能していました。

残念ながら、新しいマシンでは、NUnitはユニットテストをロードせず、「System.IO.FileNotFoundException:ファイルまたはアセンブリ'UnitTest'またはその依存関係の1つをロードできませんでした。システムは指定されたファイルを見つけることができません」というエラーメッセージが表示されます。(実際、これを実現するには、ソリューションのすべてのプロジェクトを実行し、それらを32ビットに設定する必要がありました。)

そこで、Dependency Walkerをロードすると、IESHIMS.DLLが見つからないことがわかりました。自分のマシンで2つ見つかったので、Internet Explorerディレクトリから32ビットバージョンでコピーすると、DWはそのファイルについて文句を言うのをやめました。

ただし、GPSVC.DLLもありません。これのコピーはC:\ Windows \ System32で1つしか見つかりませんでしたが、それを単体テストディレクトリにコピーすると、DWは64ビットであると文句を言い、NUnitはまだ実行されません。また、不足しているリストにSYSNTFY.DLLが追加されるようになりました。私はそのうちの1つしか持っていません、そしてそれも64ビットです。NUnitは引き続きエラーを報告します。

では、この64ビットOSを廃棄して、古き良き32ビットに戻す必要がありますか、それとも明らかな何かが欠けていますか?

4

3 に答える 3

10

私は今日同じ問題にぶつかりました。幸いなことに、非常に単純な修正とより複雑な修正があります。

簡単な修正は、nunit-console.exeの代わりにnunit-console-x86.exeを実行することです。

部分的な説明による難しい修正は次のとおりです。

何が起こっているのかというと、nunitコンソールランナーが64ビットモードで実行されているため、32ビットモードの単体テストdllの読み込みが何らかの理由で停止します。

修正はnunitコンソールexeに対して行われ、32ビット互換モードで実行するようにWindowsに指示します。このリンクはそれを行う方法を示しています。

注意:corflags.exeを取得するには、Windows SDKもダウンロードする必要があります。忘れずに、SDKコマンドプロンプトからコマンドを実行してください。

于 2010-04-14T14:56:10.043 に答える
0

動作させる唯一の方法は、アプリケーション全体を 32 ビット ターゲットに変換し、32 ビット仮想マシンでテストすることでした。また、ネットワーク ドライブではデバッグが許可されていないため、DLL はローカル (非ネットワーク) ドライブに配置する必要がありました (少なくとも、動作させることはできませんでした)。

于 2010-03-31T14:34:24.393 に答える