2016-07-06 13 views
4

シンプルな.netコアのMVC Webサービスを作成しました。私がそれを実行するとうまく動作します。.Netコアテストプロジェクトでシステム参照が失われ続ける

私はテストプロジェクトといくつかのテストで追加しましたが、すべて正常に機能しました。

今朝私は私のウェブサービスをリファクタリングして、使用していたDAOコードが別のアセンブリに移動されるようにしました。私がこれをやろうとすると、http500のエラーが出てきて、私のテストプロジェクトはもはや動かなくなります。

System.IO.FileNotFoundException:ファイルまたはアセンブリ をロードできませんでした 'System.Runtime、バージョン= 4.1.0.0、文化=中立、 なPublicKeyToken = b03f5f7f11d50a3a' またはその依存関係の1つ。 システムは、指定されたファイルを見つけることができません。

急いでグーグルが何かを回していないので、私はDAOアセンブリプロジェクトへの参照を削除し、元のプロジェクトにすべてのコードをコピーしました。今、元のプロジェクトは動作しますが、テストプロジェクトでバインディングエラーが発生しています。 Fusionはエラーを表示します。

Test method TestService_Tests.ControllerTests.TestGetEnquiries threw exception: 
System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 
Running under executable C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 14.0\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\TESTWINDOW\vstest.executionengine.x86.exe 

A detailed error log follows. 

Pre-bind state information === 
LOG: DisplayName = System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 
(Fully-specified) 
LOG: Appbase = file:///c:/users/matt/documents/visual studio 2015/Projects/TestService/TestService_Tests/bin/Debug 
LOG: Initial PrivatePath = NULL 
Calling assembly : ReportingService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 14.0\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\TESTWINDOW\vstest.executionengine.x86.exe.Config 
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 
LOG: Post-policy reference: System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 
LOG: The same bind was seen before, and was failed with hr = 0x80070002. 

私は、.netコアアセンブリを追加するとどこかで構成上の問題が発生したとします。しかし、どのように私はそれを追跡するのですか?テストプロジェクトを削除して、もう一度やり直して、構成の問題がテストプロジェクトにあることを望んでいませんか?

試行錯誤で、コントローラを呼び出す行でエラーが発生したと言えます。 コントローラーの動作をテストしないダミー・テスト。しかし、問題は私のコードのいずれかでテストが行​​われるとすぐに発生します。

{ 
"dependencies": { 
"Microsoft.NETCore.App": { 
    "version": "1.0.0", 
    "type": "platform" 
}, 
"Microsoft.AspNetCore.Mvc": "1.0.0", 
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0", 
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0", 
"Microsoft.Extensions.Configuration.Json": "1.0.0", 
"Microsoft.Extensions.Logging": "1.0.0", 
"Microsoft.Extensions.Logging.Console": "1.0.0", 
"Microsoft.Extensions.Logging.Debug": "1.0.0", 
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
"ReportingBusinessLayer": "1.0.0-*", 
"System.Runtime": "4.1.0" }, 

"tools": { 
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" 
}, 

"frameworks": { 
"netcoreapp1.0": { 
    "imports": [ 
    "dotnet5.6", 
    "portable-net45+win8" 
    ] 
} 
}, 

"buildOptions": { 
"emitEntryPoint": true, 
"preserveCompilationContext": true 
}, 

"runtimeOptions": { 
"configProperties": { 
    "System.GC.Server": true 
} 
}, 

"publishOptions": { 
"include": [ 
    "wwwroot", 
    "Views", 
    "Areas/**/Views", 
    "appsettings.json", 
    "web.config" 
] 
}, 

"scripts": { 
"postpublish": [ "dotnet publish-iis --publish-folder publish:OutputPath% --framework %publish:FullTargetFramework%" ] 
} 
} 
+0

project.jsonファイルを投稿できますか? –

+0

xUnitを使用しようとしていますが、解決できない場合は復元して行います。 – Matt

+0

Project.jsonファイルが追加されました – Matt

答えて

0

ローカル設定を確認してください。リファクタリング後に参照が解決されない場合は、ローカルをどこかで偽にコピーするか、プロバイダとコンシューマプロジェクトの両方に参照が追加されないためです。このシステムライブラリにはこれが必要であるとは思いませんが、他にどのようなフレームワークがあるのか​​わからないので、チェックする価値があります。

また、プロバイダライブラリがコンシューマとは異なるアセンブリまたは.NETランタイムバージョンをターゲットにしていないことを確認してください。

+0

コピーローカルと参照があります。私は、さまざまな.netバージョンの全負荷を経験しましたが、喜びはありません。 私はこの問題を何度も繰り返しています。今回は、私の以前のプロジェクトとの唯一の違いは、.netコアを使用しています。 – Matt

+1

呼び出し元アセンブリで[dependency walker](http://www.dependencywalker.com/)を使用してみてください。プロジェクトの両方またはDAOプロジェクトだけにコア参照がありますか? DAOなら、あなたは両方でそれを望みます。 –

+0

ナゲットによると、それは両方にあります。フュージョンは、私が見ることができるエラーを見つけることはありません。そしてコードはコンパイルされ、正常に動作します。そのテストだけです。私はあきらめて、ちょっとxunitのような何かを試してみて、問題が消えるかどうか見てみてください。 – Matt

関連する問題