asp.net - 실행 - 대상 프레임 워크.netframework version v4 0 에 대한 mscorlib 를 확인할 수 없습니다




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

Asp.Net Core RC1 프로젝트를 RC2로 마이그레이션하려고하는데이 documentation 를 따르고 있으며 DNX를 .NET CLI로 마이그레이션하기위한 instructions 도 따르고 있습니다.

dotnet run 시도 할 때 다음 오류가 발생 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 실행 dotnet restore 성공적으로 완료된 것 같습니다.

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


VS 2015가 설치된 Windows 7에서 netcore 1.1.2로 업데이트 한 후의 솔루션은 다음과 같이 project.json 파일을 변경했습니다.

{
"version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.NETCore.App": "1.1.2"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": "dnxcore50"    //This line must disappear
    }
  },

  "runtimes": {                 //
    "win7-x64": {}              //Add this lines
  }                             //
}

이를 변경하면 종속성이 업데이트되고 비올라가됩니다.


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

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

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

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

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

project.json에서 다음이 필요하다는 것을 알았습니다. 내 오류를 해결하는 데 필요한 것은 다음과 같습니다.

의존성

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

프레임 워크

"frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

실행 시간

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

IIS에 게시하려는 경우 런타임을 추가 할 수 있습니다. 다음과 같은 것을 참조하십시오 :

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

여기 나를 위해 잘 작동하는 일반적인 팁이 있습니다. 내 물건이 깨지면 때로는 웹 사이트 또는 빈 웹 API 중 하나 인 기본 ASP.NET Core 응용 프로그램을 만들어 project.json 및 다른 곳의 종속성을 봅니다. 그런 식으로 많은 것을 잡을 수 있습니다. 위의 답변은 제 자리에 있지만 누군가가 ASP.NET Core에서 사용하는 일반적인 템플릿 형식으로 논리를 더 분리하려는 경우 여기에 작성한다고 생각했습니다.


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

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

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

그리고 나는 가기 좋았다.

2017 년 2 월 27 일 업데이트

앱을 FDD ( Framework Dependent Deployment 로 배포하도록 선택하면 Visual Studio 2017 RC의 새 프로젝트 템플릿에서 더 이상 런타임을 미리 지정하지 않아도됩니다 ( project.json 또는 .csproj ).

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

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

<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>

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


이 두 링크를 읽으면 :

먼저 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)이 포함됩니다. 실제 응용 프로그램.