2016-07-06 1 views
4

나는 간단한 .net 코어 MVC 웹 서비스를 만들었다. 그것을 실행할 때 잘 동작합니다..Net 핵심 테스트 프로젝트가 시스템 참조를 잃어 버린다.

테스트 프로젝트와 몇 가지 테스트에 추가되었습니다. 모든 것이 잘 수행되었습니다.

오늘 아침 나는 내가 사용하고있는 DAO 코드가 별도의 어셈블리로 옮겨 지도록 내 웹 서비스를 리팩터링했습니다. 이 작업을 수행하자마자 http500 오류가 발생하기 시작하고 테스트 프로젝트가 더 이상 실행되지 않습니다.

System.IO.FileNotFoundException가 : 파일 또는 어셈블리 로드 할 수 없습니다 '문화 = 중립, System.Runtime, 버전 = 4.1.0.0을 PublicKeyToken = b03f5f7f11d50a3a'또는 해당 종속성 중 하나. 시스템에서 지정된 파일을 찾을 수 없습니다.

빠른 google이 아무것도 설정하지 않았으므로 DAO 어셈블리 프로젝트에 대한 참조를 삭제하고 모든 코드를 원래 프로젝트로 복사했습니다. 이제 원래 프로젝트가 작동하지만 테스트 프로젝트에서 여전히 바인딩 오류가 발생합니다. 퓨전이 오류를 보여줍니다.

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

Nuget에 따르면 두 가지 모두에 해당됩니다. 퓨전은 내가 볼 수있는 오류를 찾지 못했습니다. 그리고 코드가 컴파일되고 실행됩니다. 저는 포기하고 잠시 후 xunit과 같은 일을 시도 할 것입니다. 문제가 사라지게되는지보십시오. – Matt

관련 문제