2017-04-09 1 views
1

기존 MVC 프로젝트에서 ReportViewer 14.0으로 업그레이드 한 후에는 해결할 수 없거나 이해할 수없는 어셈블리 충돌이 있습니다.설치 후 어셈블리 충돌 Microsoft.ReportingServices.ReportViewerControl.WebForms

경고 동일한 종속 어셈블리의 서로 다른 버전간에 충돌이 발견되었습니다. Visual Studio에서 충돌을 해결하려면이 경고를 두 번 클릭하거나 선택하고 Enter 키를 누릅니다. 그렇지 않으면 응용 프로그램 구성 파일의 NRM C : \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ 15.0 \ Bin \ Microsoft.Common의 런타임 노드에 다음 바인딩 리디렉션을 노드에 추가하십시오. .CurrentVersion.targets 1964

또한 말한다 :

방법은 = 14.0.0.0, 문화 = 중립, PublicKeyToken = b03f5f7f11d50a3a "Microsoft.Build.Framework, 버전 사이의 갈등을 해결하기 위해 "및 "Microsoft.Build.Framework, Version = 4.0.0.0, 문화 = 중립, PublicKeyToken = b03f5f7f11d50a3a".

<dependentAssembly> 
    <assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="B03F5F7F11D50A3A" culture="neutral"/> 
    <bindingRedirect oldVersion="0.0.0.0-14.0.0.0" newVersion="14.0.0.0"/> 
</dependentAssembly> 

그러나 이것은 런타임에이 오류를 만듭니다 :

수있다 (이 말한대로)

나는 그것의 Web.config에이 라인을 추가 오류 메시지를 두 번 클릭하면 파일 또는 어셈블리를로드 할 수 없습니다. Microsoft.Build.Framework, 버전 = 4.0.0.0, 문화 = 중립, PublicKeyToken = b03f5f7f11d50a3a 또는 종속성 중 하나. 시스템이 지정된 파일을 찾을 수 없습니다.

Web.Config에서 bindingRedirect를 제거하면 경고 만 표시되지만 ReportViewer 14.0을 포함하여 모든 것이 정상적으로 작동합니다. 내가 빌드 아웃 진단을 변경하는 경우

, 나는이 추가 정보가 나타납니다

  • System.Net
  • 을 : 진단 로그에

    1> There was a conflict between "Microsoft.Build.Framework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". (TaskId:13) 
    1> No way to resolve conflict between "Microsoft.Build.Framework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Choosing "Microsoft.Build.Framework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" arbitrarily. (TaskId:13) 
    1>  References which depend on "Microsoft.Build.Framework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" [C:\Program Files (x86)\Reference Assemblies\Microsoft\MSBuild\v14.0\Microsoft.Build.Framework.dll]. (TaskId:13) 
    1>   C:\Program Files (x86)\Reference Assemblies\Microsoft\MSBuild\v14.0\Microsoft.Build.Tasks.Core.dll (TaskId:13) 
    1>   Project file item includes which caused reference "C:\Program Files (x86)\Reference Assemblies\Microsoft\MSBuild\v14.0\Microsoft.Build.Tasks.Core.dll". (TaskId:13) 
    1>    Microsoft.ReportViewer.Design, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL (TaskId:13) 
    1>    Microsoft.ReportViewer.WebDesign, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL (TaskId:13) 
    1>   C:\Program Files (x86)\Reference Assemblies\Microsoft\MSBuild\v14.0\Microsoft.Build.Utilities.Core.dll (TaskId:13) 
    1>   Project file item includes which caused reference "C:\Program Files (x86)\Reference Assemblies\Microsoft\MSBuild\v14.0\Microsoft.Build.Utilities.Core.dll". (TaskId:13) 
    1>    Microsoft.ReportViewer.Design, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL (TaskId:13) 
    1>    Microsoft.ReportViewer.WebDesign, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL (TaskId:13) 
    1>  References which depend on "Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" [C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\Microsoft.Build.Framework.dll]. (TaskId:13) 
    1>   D:\Dev\VS\--hidden-- (MVC)\NRM\packages\Microsoft.ReportingServices.ReportViewerControl.WebForms.140.340.80\lib\net40\Microsoft.ReportViewer.WebForms.dll (TaskId:13) 
    1>   Project file item includes which caused reference "D:\Dev\VS\--hidden-- Relatie Management (MVC)\NRM\packages\Microsoft.ReportingServices.ReportViewerControl.WebForms.140.340.80\lib\net40\Microsoft.ReportViewer.WebForms.dll". (TaskId:13) 
    1>    Microsoft.ReportViewer.WebDesign, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL (TaskId:13) 
    1>    Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL (TaskId:13) 
    

    을 위해 언급 충돌도 있습니다 Microsoft.Build.Framework

  • mscorlib
  • System.Core
  • 시스템
+0

NuGet을 통해 설치 했습니까? 내가 했어 그리고 나는 또한 2 "충돌을 해결할 수있는 방법"메시지가 있지만 런타임 오류가 없어. 그러나 나는 VS 2015 (당신은 2017을 사용한다)를 사용한다. 프로젝트에서 ReportViewer를 어떻게 사용 하시겠습니까? 내가 아는 한 .CSHTML 페이지 (웹 양식과 만 호환 가능)에서 아무 것도 렌더링 할 수 없습니다. 제 경우에는 .PDF 만 필요하고 보고서는 원격 모드로 실행됩니다. –

+0

안녕하세요 @ JoeSchmoe, 예 NuGet을 사용했습니다. 나는 그것을 풀어 왔지만 지금은 어떻게했는지 잘 모르겠습니다. 바보! 나는 그것을 (컨트롤러에서) 코드로 PDF를 만들고 FileStreamResult로 파일을 클라이언트에 반환하는 데 사용한다. 그렇게하면 브라우저에 표시하거나 브라우저에서 파일로 다운로드 할 수 있습니다. 그래서 웹 컨트롤을 사용하여 PDF 파일을 렌더링하지 않고 렌더링합니다. 그것은 아주 잘 작동합니다. – roberth

답변

0

오늘 다시 오류가 발생했습니다.

NuGet을 통해 ReportViewer를 추가 할 때 수동으로 이러한 참조를 추가하는 동안 문제가 발생했습니다. 수동 참조를 지웠으나 이것으로 Web.Config를 지우지 못했습니다. 이 과정에서 나는 그것과 관련된 다른 패키지도 업데이트했다.

Web.Config에서이 줄을 정리하여 문제를 해결했습니다.

enter image description here