2017-10-20 4 views
11

4.6.1을 처음으로 타겟팅하는 웹 응용 프로그램이 있습니다. 이 웹 응용 프로그램은 클래스 라이브러리를 참조합니다. 차례로 이것은 Net 표준 1.6 클래스 라이브러리를 참조합니다.Net 4.6.1/4.7에서 Net Standard를 참조하는 중 오류가 발생했습니다

Net Standard 라이브러리에 대한 참조를 추가하는 것이 가장 최근의 변경 사항이었고 중단 된 것으로 보입니다. 웹 표준은 Net 표준 라이브러리가 도입 될 때까지 제대로 작동했습니다.

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.

System.Runtime이 웹 응용 프로그램에서 NuGet 패키지로 포함되어있는 시점에서, 나는 오류를 받기 시작했다.

관련이 없지만 패키지 디렉토리를 볼 때; System.Runtime.4.3.0 \ lib에 net45net462 디렉토리가 있지만 4.6.1 또는 4.7 디렉토리는 아닙니다 (아래에서이 디렉토리가 예상되는 이유 참조). 근무 한 적이없는 내가 해봤

어떤 것들은 :

  • here이 4.6.1 지원 인터넷 표준 1.6을보고에도 불구하고, 나는 4.7 업그레이드를 시도했지만 아무 소용이.
  • web.config에서 어셈블리 리디렉션을 설정하려고 시도했습니다. 이것은 4.0.0.0을 찾고 그 다음에 리다이렉트가 시작되었다고 말하기 위해 약간의 에러를 변경하지만, 그것은 본질적으로 같은 에러입니다.
  • 패키지 디렉토리를 제거하여 강제로 새로 고칠 수 있는지 확인했습니다 (또한 System.Runtime에서 Update-Package 시도).
  • 웹 검색에서 비슷한 문제가 두 개 발견되었습니다. 하나는 GitHub (재배치 할 수없는 것)에서 VS2017을 업데이트하면 문제가 해결된다는 것입니다.

웹상에 내가 경험할 수있는 유일한 사람이 아니라고 생각하는 최신 자료가 충분합니다. 비록 내가 그 원인이 무엇인지에 대한 설명을 찾지 못했지만. 누구나이 문제의 원인에 대한 설명이나 사용할 수있는 진단 단계를 제공 할 수 있습니까?

+0

어떤 Visual Studio 버전을 사용하고 있습니까? –

+0

Visual Studio 2017 (15.4.1) –

+0

아마도이 프로젝트를 재현하고 어딘가에 게시하기 위해 최소한의 프로젝트를 만들 수 있습니까? – Evk

답변

2

.NET Framework의 경우과 here에는 충돌 정보가 있습니다. 나는 후자가 가장 최근의 것으로 의심한다.

기본적으로 .NET Core 2.0 SDK이 설치되어 있지 않으면 .NET Framework 1.6에서 .NET Framework가 지원되지 않음을 나타냅니다.

.NET Standard 1.5 이하는 .NET Core 1.0 SDK가 설치된 경우 지원됩니다.

+0

Net Core 2.0 SDK에 대해 실행 중이므로 문제를 일으키지 않습니다. –

0

NuGet은 또는 프로젝트 프레임 워크에 가장 최신 프레임 워크 버전을 설치합니다. 즉, 4.6.1을 대상으로 할 때 참조 된 버전은 net45 또는 4.5가되어 Net Standard 1.1로 내려갑니다.

이론적으로 4.7로 업그레이드한다는 것은 net462를 참조한다는 것을 의미하지만, 모든 것이 제대로 작동하지 않는 것은 매우 희한한 것일 수 있습니다. 4.6.2로 업데이트하려고 했습니까?

0

내가 설명한 긴 변환 과정을 거친 후 here 나는 경험이있다 : NuGet 패키지 인 NETStandard.Library를 주 프로젝트 (webapp .net 4.6.1)에도 설치해야한다. 그것은 많은 패키지를 설치할 것입니다.

NETStandard.Library 버전 1.6.1을 사용합니다.

netstandard 코드에서 System.Runtime.Serialization을 사용하는 경우 주 프로젝트에도 System.Runtime.Serialization.Primitives 및 System.Runtime.Serialization.Xml 또는 .Json을 설치해야합니다.

또한 netstandard 프로젝트의 다른 모든 참조는 주 프로젝트에서도 참조되어야합니다.

3

비슷한 문제가있어서 프로젝트에서 System.Runtime 참조를 제거하고 Nuget (Net Standard compatible)을 통해 설치하여 해결했습니다. 그것은 문제가있는 유일한 패키지가 아니 었습니다 (다른 예제, System.Net.Http). 또한 솔루션에 여러 프로젝트가있는 경우 모든 프로젝트에 Net Standard를 설치해야합니다.