[asp.net] 대상 런타임 중 하나와 호환되는 프레임 워크 .NETCoreApp = v1에 대한 런타임 대상을 찾을 수 없습니다.

나는 RC2에 Asp.Net 코어 RC1 프로젝트를 마이그레이션하려고이 다음 한 문서를 또한 따랐다 지침 .NET CLI에 DNX 마이그레이션을.

시도 할 때 다음 오류가 발생합니다 dotnet run.

대상 런타임 중 하나와 호환되는 ‘.NETCoreAPP, Version = v1.0’프레임 워크의 런타임 대상을 찾을 수 없습니다 : ‘win10-x64, win81-x64, win8-x64, win7-x64’. 가능한 원인들:

  1. 프로젝트가 복원되지 않았거나 복원에 실패했습니다. ‘dotnet restore’를 실행하십시오.
  2. 이 프로젝트는 ‘런타임’에 ‘win10-x64, win81-x64, win7-x64’중 하나를 나열하지 않습니다.

나는 달리고 dotnet restore성공적으로 완료 된 것 같습니다.

모든 관련 패키지를 RC2로 업데이트했습니다.



답변

오류 메시지가 말한 것과 정확히 일치해야합니다. RC1에서 마이그레이션 할 때 파일에 runtimes섹션 을 지정해야한다는 것을 알지 못했습니다 project.json.

project.json에서 다음 섹션을 추가했습니다.

"runtimes": {
    "win10-x64": { }
  }

그리고 나는 가기 좋았다.


2017 년 2 월 27 일 업데이트

Visual Studio 2017 RC의 새 프로젝트 템플릿은 더 이상 앱을 배포하도록 선택하면 더 이상 런타임을 지정 project.json하거나 으로 지정할 필요가 없습니다 .csproj.Framework Dependent Deployment (FDD)를.

그러나 Self-contained Deployment(SCD)를 사용하여 앱을 배포하기로 선택한 경우 사전 에 앱을 실행하려는 모든 런타임을 지정해야 합니다..csproj 파일 합니다.

다음은 .csprojSCD 배포 방법을 사용하는 앱 파일 의 예입니다 .

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp1.0</TargetFramework>
    <VersionPrefix>1.0.0</VersionPrefix>
    <DebugType>Portable</DebugType>
    <RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
  </ItemGroup>
</Project>

두 가지 유형의 배포 옵션과 장점 및 단점에 대한 자세한 설명이 포함 된 자세한 내용 은 이 링크 를 참조하십시오 .


답변

VS2015 핵심 템플릿을 1.0.1로 업데이트 한 후이 오류가 발생했습니다. netstandard 1.4 각 런타임을 지정하지 않으려는 경우 대상 PCL이 있기 때문에 종속성 마크 업을 다음 Microsoft.NETCore.App과 같이 변경하십시오 .

"Microsoft.NETCore.App": {
 "type": "platform",
 "version": "1.0.1"
}


답변

project.json에서 이것을 변경했습니다 (추가 유형).

//"Microsoft.NETCore.App": "1.1.0",
"Microsoft.NETCore.App": { "version": "1.1.0", "type": "platform" },

이제 다시 만들 수 있습니다 🙂

업데이트 : 이제 웹 사이트를 다시 만들 수는 있지만 “실행”할 수는 없습니다.

런타임과 SDK도 있는지 확인해야합니다.

*) Visual Studio 도구에는 .NET Core 1.0.1이 포함되어 있습니다. .NET Core 1.1 지원을 추가하려면 .NET Core 1.1 런타임도 설치해야합니다.

https://www.microsoft.com/net/download/core#/current


답변

Visual Studio 2015에서 엄청나게 깨진 NuGet Package Manager를 사용하여 project.json 종속성을 업데이트했기 때문에이 오류가 발생했습니다. 그것은 이것을 돌렸다 :

"frameworks": {
  "netcoreapp1.0": {
    "dependencies": {
      "Microsoft.NETCore.App": {
        "type": "platform",
        "version": "1.0.1"
      }
    }
  }
}

이것으로 :

"dependencies": {
  "Microsoft.NETCore.App": "1.1.0"
},
"frameworks": {
  "netcoreapp1.0": {}
}

안녕, 플랫폼 정의!


답변

이 두 링크를 읽으면 :

먼저 https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/using-with-xplat-cli

둘째, https://docs.microsoft.com/en-us/dotnet/articles/core/rid-catalog

project.json의 dependencies 루트 요소에서 다음 스 니펫을 사용하여 완전히 이식 가능한 버전을 빌드 할 수 있음을 알 수 있습니다. CORE 레벨 런타임이기 때문에 런타임을 지정할 필요가 없습니다. 이는 플랫폼과 무관하거나 “프레임 워크에 의존적”이어야합니다.

"Microsoft.NETCore.App": {
    "type": "platform",
    "version": "1.0.1"
}

또는 다음과 같이 type : platform 요소를 제거하여 여러 대상 플랫폼 ( “자체 포함 된 응용 프로그램”)을 구축 할 수 있습니다.

이것을 project.json의 dependencies 루트 요소에 추가하십시오

"Microsoft.NETCore.App": {
    "version": "1.0.1"
}

이것을 새로운 루트 레벨 요소로 추가하십시오

"runtimes": {
    "win10-x64": {},  /* one or more RIDs */
    "osx.10.10-x64": {}
  },

여러 대상을 지정하려면 “.NET RID (핵심 런타임 ID)”라고하는 플랫폼 이름을 제공해야합니다. 이러한 목록은 위의 두 번째 링크에서 찾을 수 있습니다. 여기에는 다양한 Windows, Linux 및 OS X가 포함됩니다.

다양한 배포 옵션에 대한 개요를 보려면이 페이지를 읽어보십시오.

https://docs.microsoft.com/en-us/dotnet/articles/core/deploying/index

위의 링크에서 :

.NET Core 응용 프로그램에 대해 두 가지 유형의 배포를 만들 수 있습니다.

프레임 워크 종속 배포

이름에서 알 수 있듯이 FDD (Framework-Deployment Deployment)는 대상 시스템에 존재하는 공유 시스템 전체 버전의 .NET Core를 사용합니다. .NET Core가 이미 있으므로 .NET Core 설치간에 앱을 이식 할 수도 있습니다. 앱에는 자체 코드와 .NET Core 라이브러리 외부의 타사 종속성 만 포함되어 있습니다. FDD에는 명령 줄에서 dotnet 유틸리티를 사용하여 시작할 수있는 .dll 파일이 포함되어 있습니다. 예를 들어 dotnet app.dll은 app이라는 응용 프로그램을 실행합니다.

독립적 인 배포

FDD와 달리 SCD (self-contained deployment)는 대상 시스템에 존재하는 공유 구성 요소에 의존하지 않습니다. .NET Core 라이브러리 및 .NET Core 런타임을 포함한 모든 구성 요소는 응용 프로그램에 포함되어 있으며 다른 .NET Core 응용 프로그램과 분리되어 있습니다. SCD에는 플랫폼 별 .NET Core 호스트의 이름이 바뀐 버전 인 실행 파일 (예 : app이라는 응용 프로그램의 경우 Windows 플랫폼의 app.exe)과 .dll 파일 (예 : app.dll)이 포함됩니다. 실제 응용 프로그램.


답변

필자의 경우 모든 nuget 패키지를 최신 버전으로 업데이트했으며 nuget에서 ‘Microsoft.NETCore.App’패키지 참조를 다음과 같이 변경했습니다.

"Microsoft.NETCore.App": "1.1.0"

나는 그것을 다음과 같은 형식으로 바꾸었고 모든 것이 잘 작동했습니다.

"Microsoft.NETCore.App": {
      "version": "1.1.0",
      "type": "platform"
    }

안녕 내 인생의 3 시간 ….


답변

dotnet new를 실행하고 출력 프로젝트 json을 보면 모니 커가 변경되었음을 알 수 있습니다.

다음과 같이 project.json을 변경하십시오.

"dependencies": {},
   "frameworks": {
     "netcoreapp1.0": {
        "dependencies": {
         "Microsoft.NETCore.App": {
         "type": "platform",
         "version": "1.0.1"
         }
    },
      "imports": "dnxcore50"
    }
  }