프로젝트가“.NETFramework, Version = v4.6.2”프레임 워크를 참조하지 않습니다. “TargetFrameworks”에“.NETFramework, Version = v4.6.2”에 대한 참조를 추가합니다.


112

단위 테스트를 실행할 수 없습니다.

다음 오류가 있습니다.

프로젝트가 ".NETFramework, Version = v4.6.2"프레임 워크를 참조하지 않습니다. 프로젝트 파일의 "TargetFrameworks"속성에 ".NETFramework, Version = v4.6.2"에 대한 참조를 추가 한 다음 NuGet 복원을 다시 실행합니다.

에서 app.config:

<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
</startup>

프로젝트> 속성> 응용 프로그램> TargetFramework (.NET Framework 4.6.2)에서

어떻게 고칠 수 있습니까?


답변:


272

다음 단계를 수행하십시오

  1. 깨끗한 솔루션
  2. 클린 폴더 "패키지"
  3. "bin"폴더 삭제
  4. "obj"폴더 삭제

27
# 3과 # 4가 문제를 해결했습니다. 4.7.2로 업그레이드하는 분기가 있었지만 4.7.1을 대상으로하는 다른 분기로 전환해야했습니다. 이 문제를 해결하려면 다음 단계를 수행하십시오.
jjhayter

4
솔루션 디렉토리에서 한 단계 더 수행해야했습니다. del / S project.assets.json
Jannes

이 청소를 한 후 .Net Framework 오류가 표시된 프로젝트에 또 다른 오류가 있음을 알았습니다. 문제를 해결했습니다.
meJustAndrew

2
stackoverflow.com/a/755433/769137 에는이를 삭제하기위한 배치 스크립트가 있습니다.
Vedran

1
4.7.2에서 4.8로 업그레이드했는데 obj/폴더 를 삭제하는 것으로 충분했습니다 .
skst

30

비슷한 문제가 발생했지만 v4.7.2. 즉, 다음과 같은 빌드 로그 메시지가 계속 나타납니다.

error : Your project does not reference ".NETFramework,Version=v4.7.2" framework. Add a reference to ".NETFramework,Version=v4.7.2" in the "TargetFrameworks" property of your project file and then re-run NuGet restore.

비슷해 보였음에도 불구하고 위의 제안 된 단계 중 어느 것도 저에게 효과가 없었습니다. 빌드 할 때마다이 메시지가 계속 표시되었습니다. 아무것도 도울 수없는 것 같았습니다.

사실 문제는 마이그레이션으로 인해 하나 의 코드 폴더두 개의 프로젝트 를 넣어야한다는 점과 관련 이 있습니다. 그중 하나는 .Net Core를 대상으로하고 다른 하나는 .Net Framework를 대상으로했으며 둘 다 동일한 .Net Standard 라이브러리를 참조했습니다. 분명히 그들은 objCore 프로젝트가 project.assets.json파일을 넣는 동일한 폴더 를 공유 합니다. 실제로이 파일은 프레임 워크 프로젝트를 방해하여 정상적인 빌드를 방해합니다. Migrate from packages.config to PackageReference ... 를 수행 한 경우에도 가능한 솔루션 중 하나로 권장되었습니다.

프레임 워크 프로젝트 파일에 다음 코드 조각을 넣어 문제를 해결할 수 있습니다.

<Project>
  ...
  <PropertyGroup>
    <BaseOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/bin</BaseOutputPath>
    <BaseIntermediateOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/obj</BaseIntermediateOutputPath>
  </PropertyGroup>
  ...
</Project>

그것은 즉시 저에게 효과가 있었고 나중에 왜 그것이 필요한지, 왜 작동하는지주의 깊게 읽었을 때였습니다. 나는 예기치 않게에서 발견 파트 2.NET 코어 3로 마이그레이션 샘플 WPF 응용 프로그램 에서 의 .NET 프레임 워크 프로젝트는 여전히 빌드 확인 만들기 섹션을 참조하십시오. BaseOutputPath그리고 BaseIntermediateOutputPath그들이 어디서든 잘 설명하는 경우 MSBuild에서 변수는 확실하지, 거기에 찾을 수 있습니다.


이것은 내 문제를 해결했습니다. 그렇지 않으면 절대 찾을 수 없습니다. 감사합니다.
Erdogan Kurtur

1
VS2019에서 언급 한 속성은 OutputPath 앞에 있어야합니다. 처음에는 성공하지 못한 채 csproj의 맨 아래에 놓았습니다. 이 게시물에는 몇 가지 추가 세부 정보가 있으며이 문제가
John Dyer

20

그것은 VS2017에서 VS2015 프로젝트를 열 때 나에게 일어났습니다. 폴더 project.assets.json에서를 삭제하면 obj트릭이 발생했습니다.

어쨌든, 메시지의 프레임 워크가 파일에서 누락되었지만 거기에 추가하지 않았고 삭제했습니다.


2
가장 간단한 솔루션입니다. 솔루션에서 파일을 검색하고 즉시 삭제하십시오 :)
Imad

5

나는 라리사에게 찬성표를 던졌지 만 내가이 일에 어떻게 들어 갔는지 아는 것이 도움이 될 것이라고 생각했습니다. .net 표준 프로젝트 파일을 내 빌드에 추가했고 (많은 플랫폼을 대상으로 함) obj 폴더에있는 파편이 생성되었습니다. 안드로이드 온전한 빌드가 나오면 obj 폴더에 던져졌습니다. 내 솔루션은 사전 빌드 단계로 해당 폴더를 정리하는 것이 었습니다. 수년 동안 잘 작동했기 때문에 어려운 문제입니다. 바늘이 건초 더미를 만납니다.


2

제 경우 .pkgrefgen/에는 작업 폴더 아래 의 폴더를 삭제 하십시오. 이전 .net 프레임 워크를 참조하는 project.assets.json 파일이 포함되어 있습니다.


2
내 것은 obj 폴더의 project.assets.json 파일이었습니다. bin 및 obj 폴더를 삭제하고 문제가 해결되었습니다.
Ceres

1

.net 4.71에서도 같은 문제가 발생했습니다. 제 경우에는 단순히 packages.config에서 "package references"로 마이그레이션했습니다.

packages.config에서 PackageReference로 마이그레이션

... 내 문제가 해결되었습니다. 저에게는 어쨌든이 작업을 수행하려고했기 때문에 이미이 방법을 사용하고 있다면 위의 내용을 건너 뛰고 패키지 참조로 마이그레이션 할 것입니다.


0

나는 아주 오래된 .NET 프로젝트를 사용하고 있는데 갑자기 멈출 때까지 잘 작동했습니다. Visual Studio 업그레이드가 나를 위해 수정되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.