20

みなさん、良い一日を。私は仕事で一日中同じ問題を抱えていて、下がる新しい道を見つけるのに苦労しています。

ソリューションがサーバー上に構築されると、次のエラーが発生します。ソリューション内のすべてのテストの実行/デバッグに問題はなく、正常にビルドされます。サーバーと私のPCはどちらもx64です。私は役に立たないことがわかった多くのアドバイスに従いました。

すべての構成で、ソリューション内のすべてのプロジェクトのプラットフォームターゲットをx86に設定しました。

すべての違いを生む可能性のあるnunit-console-x86.exeがあることは知っていますが、コードのどこでこれを指定するかはわかりません。

私はインターネットの先駆者であることに気づいてください。何かを逃してしまった場合はお詫び申し上げます。

System.BadImageFormatException:ファイルまたはアセンブリを読み込めませんでした
'Spin.TradingServices.DataAcquisition.Test.NUnit、Version = 1.0.12103.2060、Culture = neutral、PublicKeyToken=null'またはその依存関係の1つ。間違った形式のプログラムを読み込もうとしました。
ファイル名:'Spi​​n.TradingServices.DataAcquisition.Test.NUnit、Version = 1.0.12103.2060、Culture = neutral、PublicKeyToken = null'

サーバースタックトレース:System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName、String codeBase、Evidence assemblySecurity、RuntimeAssembly locationHint、StackCrawlMark&stackMark、Boolean throwOnFileNotFound、Boolean forIntrospection、BooleansuppressSecurityChecks)at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName AssemblySecurity、StackCrawlMark&stackMark、Boolean forIntrospection、BooleansuppressSecurityChecks)at System.Reflection.Assembly.Load(AssemblyName assemblyRef)at NUnit.Core.Builders.TestAssemblyBuilder.Load(String path)at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName 、ブールautoSuites)at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName、String testName、ブールautoSuites)at NUnit.Core.TestSuiteBuilder.BuildSingleAssembly(TestPackage package)at NUnit.Core.TestSuiteBuilder.Build(TestPackage package)at NUnit.Core.SimpleTestRunner.Load(TestPackage package)at NUnit.Core.ProxyTestRunner.Load(TestPackage package )at NUnit.Core.ProxyTestRunner.Load(TestPackage package)at NUnit.Core.RemoteTestRunner.Load(TestPackage package)at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md、Object [] args、Object server、Int32 methodPtr、Boolean fExecuteInContext、Object []&outArgs)at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg、Int32 methodPtr、Boolean fExecuteInContext)TestSuiteBuilder.Build(TestPackage package)at NUnit.Core.SimpleTestRunner.Load(TestPackage package)at NUnit.Core.ProxyTestRunner.Load(TestPackage package)at NUnit.Core.ProxyTestRunner.Load(TestPackage package)atNUnit.Core.RemoteTestRunner。 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md、Object [] args、Object server、Int32 methodPtr、Boolean fExecuteInContext、Object []&outArgs)at System.Runtime.Remoting.MessagingでLoad(TestPackage package)。 StackBuilderSink.SyncProcessMessage(IMessage msg、Int32 methodPtr、Boolean fExecuteInContext)TestSuiteBuilder.Build(TestPackage package)at NUnit.Core.SimpleTestRunner.Load(TestPackage package)at NUnit.Core.ProxyTestRunner.Load(TestPackage package)at NUnit.Core.ProxyTestRunner.Load(TestPackage package)atNUnit.Core.RemoteTestRunner。 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md、Object [] args、Object server、Int32 methodPtr、Boolean fExecuteInContext、Object []&outArgs)at System.Runtime.Remoting.MessagingでLoad(TestPackage package)。 StackBuilderSink.SyncProcessMessage(IMessage msg、Int32 methodPtr、Boolean fExecuteInContext)Load(TestPackage package)at NUnit.Core.RemoteTestRunner.Load(TestPackage package)at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md、Object [] args、Object server、Int32 methodPtr、Boolean fExecuteInContext、Object [] &outArgs)at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg、Int32 methodPtr、Boolean fExecuteInContext)Load(TestPackage package)at NUnit.Core.RemoteTestRunner.Load(TestPackage package)at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md、Object [] args、Object server、Int32 methodPtr、Boolean fExecuteInContext、Object [] &outArgs)at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg、Int32 methodPtr、Boolean fExecuteInContext)

[0]で再スローされた例外:System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg、IMessage retMsg)at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData、Int32 type)atNUnit.Core。 TestRunner.Load(TestPackage package)at NUnit.Util.TestDomain.Load(TestPackage package)at NUnit.ConsoleRunner.ConsoleUi.Execute(ConsoleOptions options)at NUnit.ConsoleRunner.Runner.Main(String [] args)

WRN:アセンブリバインディングログがオフになっています。アセンブリバインドの失敗のログを有効にするには、レジストリ値[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)を1に設定します。注:アセンブリのバインドの失敗のログには、パフォーマンスの低下があります。この機能をオフにするには、レジストリ値[HKLM \ Software \ Microsoft \ Fusion!EnableLog]を削除します。

http://app1017-build.oy.gb.sportingindex.com:8080/job/TradingServices.DataAcquisition-Dev/ws/DataAcquisition/build.proj(86,5):エラーMSB6006:「nunit-console.exe」が終了しましたコード-100で。Done Building Project "(デフォルトのターゲット)-失敗しました。

ビルドに失敗しました。

注意: Hudsonでのビルドを元に戻し、ファイルをより段階的に再コミットするようになりました。これがどうなるかについて報告します。残念ながら、これに数人の頭を巻き込んでみましたが、役に立ちませんでした。恥!

更新 しばらくこのページに戻っていませんが、さまざまな解決策があるようです。私がそれらすべてを答えとしてマークすることができれば、私はそうするでしょう!ここで自分の道を見つけた人は、おそらく各オプションに同等のクレジットを与える必要があります。

4

10 に答える 10

60

X64 PCのコンソールアプリでこの問題が発生しました。ビルドはx86に設定されていましたが、それでもクラッシュしました。コンソールアプリの[プロパティ]に移動し、ビルド中にプラットフォームターゲットをx86から​​任意のCPUに変更すると、突然すべてのテストが機能し、正常に実行されました。

注目すべきことに、Configuration Managerのプラットフォームフィールドは「うそをつく」ことができ、プロジェクトのプロパティが実際に実行するように構成されていることを実際に反映する必要はありません。私の構成マネージャーは、「Common.dll」は「任意のCPU」としてビルドされていると言いましたが、プロジェクトのプロパティ(本当に重要な設定)は「x86」としてビルドされていました。

ここに画像の説明を入力してください

于 2012-04-11T15:03:10.807 に答える
9

すべての回答へのマイナーな追加。私の場合のように、NUnitランナープラットフォーム(私にとってはResharper)自体を変更する必要があるかもしれません。例を見る ここに画像の説明を入力してください

于 2014-07-29T11:10:44.457 に答える
9

この設定が正しいことを確認してください:[テスト]メニュー->[テスト設定]->[デフォルトのプロセッサアーキテクチャ]->[x64/x86]。私の場合は正しくなく、同じ問題で失敗しました。

于 2015-04-07T00:14:41.870 に答える
7

アセンブリのターゲットフレームワークバージョンがnUnitテストランナーがサポートしているものと同じであることを確認してください。サポートされているランタイムのリストについては、runFile.exe.configを参照してください。

また、FW3からFW4に移行した場合は、ランタイムが異なります(CLRが異なります)。

于 2012-03-26T15:58:11.670 に答える
5

コンソールまたはWPFアプリケーションに対してテストするときに、これに頻繁に遭遇します。いくつかの原因は

  • まず、アプリケーションが.NetFramework3または4クライアントプロファイルで実行されていないことを確認します
  • 次に、アプリケーションプロジェクトとテストプロジェクトの両方で、ターゲットフレームワークの.NETバージョンを比較します。それらは同じでなければなりません
  • ビルドタブでプラットフォームターゲットを確認します。それらは同じである必要があります。たとえば、テストプロジェクトに「AnyCPU」ターゲットがある場合、アプリケーションには「AnyCPU」が必要です。
于 2012-09-10T09:12:09.453 に答える
4

私にとって、例外は/process=singlenunitの無効な引数によって引き起こされました。値を変更すると、例外はなくなります。

/process=separate

また

/process=multiple

p / s:回答が遅れていますが、参考までに。

于 2014-03-06T11:17:20.560 に答える
3

これはばかげているように聞こえるかもしれませんが、プロジェクトとプロセッサのアーキテクチャを確認してください。私の場合、64ビットマシンであると想定して64ビットテストを実行していました(64ビットプロジェクトを構築していたため)。

何だと思う?実際には32ビットマシンでした。したがって、NUnit.exeは(明らかに)32ビットとして実行され、64ビットテストを理解できません。

ソリューション?テストのx86およびx64バージョンをビルドし、x86マシンでx86バージョンを実行し、x64マシンでx64バージョンを実行します。

明らか。しかし、チェックする価値があります。

于 2012-05-03T18:16:09.077 に答える
2

私の状況は少し異なっていました。変更された単体テストを実行した後、エラーは非常にランダムに発生しました。

テストを削除すると、エラーはなくなりました。

テストを再作成しましたが、エラーが再発しました。

テストの名前を変更すると、エラーはなくなりました。

テストの名前を元に戻しましたが、問題は再発しませんでした。

お役に立てれば!

ベン

于 2014-11-12T16:30:44.143 に答える
1

私を起こしてくれたAshes999に感謝します。

この問題は再び発生しました。そして、ロールバックとアップロードは機能しませんでした。それは、私たちがもはや使用していないモニターオブジェクトであることが判明しました。コメントアウトして修正しました。

これを見つける方法は、すべての単体テストをデバッグすることです。一時停止するすべての場所を修正します。tが一時停止しない場合は、エラーが発生します。

于 2012-05-03T17:50:44.233 に答える
1

この問題がまだ発生している場合は、テストランナーのフレームワークフィールドを、含まれているプロジェクトのフレームワークフィールド(AlexMによって参照されるフィールドのすぐ右側のフィールド)と一致するように設定する必要がある場合もあります。

私の場合、Windows Phone 8ライブラリのテストスイートを作成していましたが、NUnitは使用するフレームワークのバージョンを正しく把握できませんでした。

于 2015-02-13T19:43:28.567 に答える