Visual Studio 2017에서 Microsoft.NETCore.App 패키지를 업데이트 할 수 없습니다 ( "프로젝트에서 차단됨").


82

Microsoft.NETCore.App 1.1.2를 대상으로하는 dotnet 코어 앱이 있습니다. 해당 프로젝트에 대해 테스트하기 위해 테스트 프로젝트를 만들었지 만 빌드 할 때 다음 경고가 표시되었습니다. 여기에 이미지 설명 입력

NuGet 패키지 관리자를 열고 경고가 올바른지 확인하고 테스트중인 프로젝트에 다른 버전의 Microsoft.NETCore.App이 있습니다. 여기에 이미지 설명 입력 여기에 이미지 설명 입력

내 문제는 Visual Studio가 해당 버전을 업데이트하도록 허용하지 않는다는 것이므로이 문제를 해결하는 방법이 혼란 스럽습니다. 여기에 이미지 설명 입력 이상적으로는 드롭 다운을 클릭하고 올바른 버전을 선택하는 것이 좋지만 Visual Studio는 " 프로젝트 또는 packages.config의 추가 제약 조건 ". 패키지를 어떻게 업데이트해야합니까? Visual Studio는 어떤 "추가 제약"을 의미합니까?


테스트 프로젝트가 다운 그레이드를 차단하는 것 같습니다. 솔루션을 마우스 오른쪽 버튼으로 클릭하고 솔루션에 대한 너겟 패키지 관리를 선택하고 동시에 모든 프로젝트를 다른 버전으로 이동하려고 했습니까?
Ken Tucker

나는 그것을 생각하지 않았지만 방금 시도했고 동일한 "프로젝트에 의해 차단됨"오류가 발생합니다. 또한 다른 프로젝트는 1.1.2에서 이동하지 못하도록 차단됩니다. VS 용 최신 업데이트도 설치했지만 도움이되지 않았습니다.
riqitang


이 질문 / 답변 : stackoverflow.com/questions/52518059/… 에서 찾은 모든 정보를 수집했습니다. 이 문제는 정말 질문 인 것 같기 때문입니다. 내 시나리오에 대한 답변은 완전하지 않습니다
Joshit

내 솔루션의 여러 프로젝트에서 다른 버전의 .net 코어 프레임 워크를 실수로 대상으로 삼았을 때 동일한 오류가 발생했습니다. 각 대상의 프로젝트 속성이 동일한 버전인지 확인합니다.
obaylis 2010 년

답변:


51

2018 편집 : 당신이하고있는 일을 정말로 알고있는 경우에만 패키지 업데이트 지침을 따르십시오. 대부분의 경우이 패키지 또는 "프로젝트에 의해 차단됨"으로 표시된 다른 패키지를 수동으로 업데이트 할 필요가 없습니다. 프레임 워크 종속 앱은 사용 가능한 최신 런타임을 사용하고 자체 포함 된 애플리케이션은이 패키지의 최신 버전을 사용하여 추가 빌드를 자동으로 수행합니다. (테스트 프로젝트에서이 패키지를 업그레이드해야하는 몇 가지 예외적 인 경우가 있습니다.이 경우 다른 옵션에 대해서는이 Q & A 를 추가 <TargetLatestRuntimePatch>true</…>하고 참조하십시오 )

암시 적 패키지 참조는 Microsoft.NET.Sdk추론을 NuGet을 통해 업데이트 할 수 없습니다.

project.json에서 마이그레이션 한 경우 1.1.0참조가 있는 프로젝트 에

<RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>

csproj 파일 또는 다음과 같은 항목 (이전에 패키지 관리자를 사용하여 버전을 설정 한 경우) :

<PackageReference Update="Microsoft.NETCore.App" Version="1.1.0" />

위와 같은 항목을 삭제하면 모든 패키지가 자동으로 참조됩니다 1.1.2(또는 설치된 SDK가 최신 것으로 간주하는 모든 항목 ). 또는 RuntimeFrameworkVersion모든 프로젝트에서 설정 합니다.


2
당신이 옳았습니다. .csproj 파일을 열고 <RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>줄을 제거했습니다 . VS는 여전히 수동으로 버전을 변경하도록 허용하지 않지만 적어도 지금은 올바른 버전입니다 (당신이 말한 것처럼 1.1.2로 업데이트 됨)
riqitang

48

.NET Core 2 웹 앱에 Entityframework.Core 패키지를 설치하려고 시도하는 것과 비슷한 문제가 발생했습니다. 이 문제를 해결하기 위해 패키지 관리자 콘솔을 통해 강제 설치했습니다.

Install-Package Microsoft.NETCore.App -Version 2.0.5

(2.0.5는 당시 가장 최신 버전이었습니다)

유용하기를 바랍니다. 평화.


7
이것은 2.1.1로 업그레이드하는 데 도움이되었습니다-> 훌륭한 답변과 내가 찾을 수있는 모든 기사에서 누락되었습니다.
Paul

이것은 마침내 나에게도 효과적이었습니다. 각 프로젝트에 대해 VS2017의 pmc에서 이것을 호출 한 후 v2.1.0에서 v2.1.3으로 업그레이드했습니다
Paul Meems

1
Microsoft.NETCore.App - 패키지 설치
Dorathoto

5
그래도 왜 '프로젝트에 의해 차단'됩니까? 이것은 일종의 버그입니까 아니면 정당한 이유가 있습니까? 타당한 이유가 있다면 위의 작업을하는 것이 좋은 생각이 아닐까요? 아니면 문제를 해결합니까?
niico

이 힌트에 감사드립니다. 그래서 "Blocked by project"는 "Blocked by VS NuGet GUI"로 판명되었습니다.
Grimm

19

나를 위해 추가

<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>

트릭을했다

<PropertyGroup>
  <TargetFramework>netcoreapp2.1</TargetFramework>
  <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
</PropertyGroup>

따라서 이것은 현재 컴퓨터에서 최신 버전의 프레임 워크를 대상으로합니다. 로컬 컴퓨터가 패치되고 호스트 서버가 있으면 문제가 발생하지 않습니까?
jonmeyer

우리는 독립적 인 배포를하고 있기 때문에 실제로 모릅니다. 그러나 그것이 "최신"이라고 말하고 존재하지 않는 경우 사용하지 않을 특정 버전이 없기 때문에 거친 추측으로 상상할 수 있습니다. @jonmeyer
gsharp

내 솔루션에 다른 버전이 설치되어 있습니다. 이 줄을 추가하기 위해 모두 편집했습니다. 동일한 버전으로 가져온 다음 줄을 다시 삭제했습니다. 하지만 솔루션을 위해 너겟 패키지를 관리 할 때 여전히 프로젝트에 의해 차단 된 메시지가 나타납니다.
sam

@sam 다른 솔루션도 시도 했습니까? 30 표 이상으로 두 개의 답변이 일부 사람들에게도 효과가있는 것 같습니다.
gsharp

네. 내가했다. 내가하려는 것은 UI의 솔루션 옵션에 대한 너겟 패키지 관리를 사용하고 마우스 클릭을 사용하여 설치 / 제거하는 것입니다. csproj 파일을 수동으로 편집 할 필요가 없습니다. UI를 사용하여 그렇게 할 수 없었습니다. 사용자 방식과 다른 옵션은 작동하지만 UI는 작동하지 않습니다.
sam

7

짧은 답변

Microsoft.AspNetCore.App.csproj 파일 의 패키지 참조에 명시 적 버전을 추가 합니다.

긴 답변

새로운 netcoreapp2.1 프로젝트가있었습니다. 다음은 .csproj 파일에 있습니다. Microsoft.AspNetCore.App패키지 참조 와 관련된 버전이 없습니다 .

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" />
  ...
</ItemGroup>

Microsoft.Extensions.Logging.Abstractions종속성 불일치 (빌드 오류)를 해결하기 위해 패키지 에 대한 명시 적 참조를 추가했습니다 . Micorsoft.AspNetCore.App이 종속성의 버전 2.1.0을 원했지만 다른 패키지는 버전 2.1.1을 원했습니다. 내 .csproj 파일은 이제 다음과 같이 보입니다.

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" />
  <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.1.1" />
  ...
</ItemGroup>

이것은 패키지 Micorsoft.AspNetCore.App의 2.1.0 버전이 필요하다는 경고로 빌드 오류를 줄 Microsoft.Extensions.Logging.Abstractions였지만 버전 2.1.1은 물론 해결되었습니다.

Micorsoft.AspNetCore.App경고를 수정하기 위해 버전 2.1.1 로 업데이트하려는 시도 는 OP에서 언급 한대로 패키지 관리자에 의해 차단되었습니다.

Micorsoft.AspNetCore.App이와 같이 버전 2.1.1을 명시 적으로 사용하도록 패키지 참조를 업데이트 했습니다.

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" />
  <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.1.1" />
  ...
</ItemGroup>

이것은 빌드 경고를 수정하고 Microsoft.AspNetCore.App패키지 관리자 의 모든 버전을 차단 해제했습니다 . Microsoft.Extensions.Logging.Abstractions원래 오류를 다시 소개하지 않고 명시 적 참조를 제거 할 수도있었습니다 . 최종 .csproj는 문제없이 이와 같이 보였습니다.

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" />
  ...
</ItemGroup>

3

나는 같은 문제가 있었고 문제는 패키지에 관한 것이라고 생각합니다.

<PackageReference Include="Microsoft.AspNetCore.App" />

버전을 정확히 지정한 후에 문제가 해결되었습니다.

<PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.0" />

아시다시피 그 오류는 버전 번호가


2

또 다른 가능한 해결책. 에서csproj 파일, 당신이 업그레이드하고자하는 버전으로 대상 프레임 워크를 업데이트합니다. 변경 후 아래 스 니펫에 따라 솔루션 NuGet 패키지 관리자를 통해 패키지를 업그레이드 할 수 있습니다.

전에:

<PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>

후:

<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>

0

간단히 해결했습니다. 프로젝트 (또는 ALT + Enter)-> 속성-> 애플리케이션-> 대상 프레임 워크를 마우스 오른쪽 버튼으로 클릭 (.NET Core 프레임 워크 선택 (이 경우 1.1))


0

가장 좋은 방법은 SDK와 런타임을 업그레이드 한 후 프로젝트를 다시 만든 다음 새 프로젝트에 이전 코드와 구성을 삭제하는 것입니다. 그 외에는 쓸모없는 조정과 알려지지 않은 구성에 너무 많은 시간을 소비하게 될 것입니다.

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