いずれかのターゲットランタイムと互換性のあるフレームワーク.NETCoreApp = v1のランタイムターゲットが見つかりません


149

Asp.Net Core RC1プロジェクトをRC2に移行しようとしています。このドキュメントに従っており、DNXから.NET CLIへの移行の手順も実行しています。

しようとすると、次のエラーが発生します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に更新しました。

回答:


290

エラーメッセージが言ったことを正確に実行する必要がありました。RC1から移行するときruntimesに、project.jsonファイルのセクションを指定する必要があることに気付きませんでした。

私project.jsonに次のセクションを追加しました:

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

行ってよかった。


2017年2月27日更新

Visual Studio 2017 RCの新しいプロジェクトテンプレートでは、アプリを(FDD)としてデプロイすることを選択した場合、事前にランタイムを(project.jsonまたはで.csproj)指定する必要がなくなりましたFramework Dependent Deployment。

ただし、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>

詳細については、このリンクを参照してください。これには、両方のタイプの導入オプションの完全な説明と、それらの利点と欠点が含まれます。


42
VS 2015 Update 3で新しいプロジェクトを作成しましたが、まだこのセクションがありませんでした。
— Edward Olamisan 2016

7
必ずしもこの設定を追加する必要はないと思います。ドキュメントには、「ランタイムで実行できるポータブルクラスライブラリの場合、ランタイムを指定する必要はありません」と書かれています。-これはほとんどのプロジェクトに当てはまりますが、Entity Framework Coreプロジェクトをソリューションに追加したときにこのエラーが表示されました。EF Core-少なくともRC2状態では-が実行できるプラットフォームに制限があるため、それを参照するプロジェクトは、これらの設定に準拠する必要がある可能性があります。しかし、私は推測しているだけです。ドキュメントはこの時点で本当に混乱しています。
— Bernhard Koenig

7
新しい1.0 Core VS2015テンプレートでこれを必要としなかった場合、1.0.1にアップデートして上記のエラーが発生しました。
— Steve McNiven-Scott 2016

1
@ SteveMcNiven-Scott-こちらも同じです。また、Ubuntuサーバーで復元およびビルドできるように、「ランタイム」に別の行を追加する必要がありました:「ubuntu.16.04-x64」。YMMVですが、エラーにより、不足しているプラ​​ットフォームを指摘する必要があり、追加する必要があります。
— Tsar Bomba 2016

5
エラーメッセージには「project.json」についての記述はありません。どのように人々は推測することになっていますか?
— 有用なビー

76

VS2015コアテンプレートを1.0.1に更新した後、このエラーを受け取りました。これは、netstandard 1.4 各ランタイムを指定する必要がない場合にターゲットにするPCLがあるためです。依存関係マークアップを次のMicrosoft.NETCore.Appように変更してください。

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

1
上記のマークアップでコンパイルエラーは修正されましたが、その後IIS Expressが起動しませんでした。"version": "1.0.1"を "version": "1.0.0"に変更すると、IISの問題が解決しました。
— ロス、

@Rossは、project.jsonのツールセクションを更新して、NETCore.Appのバージョンに一致させます
— DalSoft

この場合、 "tools":{"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"}、
— DalSoft

1
@DalSoft-はい、数週間前にIISIntegration.Toolsを含む最新のパッチを使用してVS 2015を更新し、Microsoft.NETCore.App:1.0.1の問題を解決しました。
— ロス

1
@usefulBeeポータブルクラスライブラリ
— Mike_G

35

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



そして時々ランタイムを再インストールすることも必要でした。
— juFo

これは私に役立ちました。ありがとう!「Microsoft.NETCore.App」をproject.jsonの依存関係から直接コメント化し、「frameworks」の下に変更:{"netcoreapp1.1":{"dependencies":{"Microsoft.NETCore.App":{" version ":" 1.1.0 "、" type ":" platform "}}}}、
— ネオジム2017年

1
ありがとうございました。この2つの簡単な手順で問題が解決しました。MSが近い将来、開発者にとってより使いやすいものになることを願っています。
— EvZ 2017

20

Visual Studio 2015で信じられないほど壊れたNuGetパッケージマネージャーを使用して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": {}
}

さようなら、プラットフォームの定義!


15

これら2つのリンクを読んだ場合:

まず、https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/using-with-xplat-cli

そして

2番目、https://docs.microsoft.com/en-us/dotnet/articles/core/rid-catalog

project.jsonの依存関係のルート要素にある次のスニペットを使用して、完全に移植可能なバージョンを構築できることがわかります。ランタイムを指定する必要はありません。これはコアレベルのランタイムであり、プラットフォームに依存しないか、「フレームワーク依存」として知られている必要があるためです。

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

または、type:platform要素を次のように削除することで、複数のターゲットプラットフォーム(「自己完結型アプリケーション」)を構築できます。

これをproject.jsonの依存関係ルート要素に追加します

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

これを新しいルートレベル要素として追加します

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

複数のターゲットを設定するには、「。NET Core Runtime IDentifiers(RID)」というプラットフォーム名を指定する必要があります。これらのリストは、上記の2番目のリンクにあります。Windows、Linux、OS Xの多くのフレーバーが含まれています。

さまざまな導入オプションの概要については、次のページもご覧ください。

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

上記のリンクから:

.NET Coreアプリケーションの2種類の配置を作成できます。

フレームワーク依存の展開

名前が示すように、フレームワーク依存デプロイメント(FDD)は、ターゲットシステムに存在する.NET Coreの共有システム全体のバージョンに依存しています。.NET Coreはすでに存在するため、アプリは.NET Coreのインストール間でも移植可能です。アプリには、独自のコードと、.NET Coreライブラリの外部にあるサードパーティの依存関係のみが含まれています。FDDには、コマンドラインからdotnetユーティリティを使用して起動できる.dllファイルが含まれています。たとえば、dotnet app.dllはappという名前のアプリケーションを実行します。

自己完結型の展開

FDDとは異なり、自己完結型デプロイメント(SCD)は、ターゲットシステムに存在する共有コンポーネントに依存しません。.NET Coreライブラリと.NET Coreランタイムの両方を含むすべてのコンポーネントは、アプリケーションに含まれており、他の.NET Coreアプリケーションから分離されています。SCDには、プラットフォーム固有の.NET Coreホストの名前を変更したバージョンである実行可能ファイル(Windowsプラットフォーム上のapp.exeなどのアプリケーション)と、.dllファイル(app.dllなど)が含まれます。実際のアプリケーション。


9

私の場合、すべてのnugetパッケージを最新バージョンに更新し、nugetが 'Microsoft.NETCore.App'パッケージの参照を次のように変更しました。

"Microsoft.NETCore.App": "1.1.0"

私はそれを次の形式に戻し、すべてがうまくいきました:

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

さようなら私の人生の3時間...


4

dotnet newを実行して出力プロジェクトjsonを見ると、モニカーが変更されていることがわかります。

次のようにproject.jsonに変更を加えます。

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

私にとってこれが最善の解決策です。.NET Coreは流動的な状態にあり、状況は変化し続けています。CLIを使用してproject.jsonを生成し、project.jsonの変更を修正して、NuGet PMが一貫性を保ち、更新を維持できないように見える。
— ジェームズB

0

次のページの下にあるsvickのコメントから役立つリンクを見つけました:https : //github.com/dotnet/cli/issues/2442


1
あなたの答えは100%正解ですが、そのリンクが移動、変更、別のリンクにマージされた場合、またはメインサイトが表示されなくなった場合も、100%役に立たなくなる可能性があります... :-(したがって、回答を編集して、関連するものをコピーしてくださいリンクから回答へのステップによって、このサイトの存続期間の100%で回答が保証されます!;-)リンクを回答の下部に素材のソースとしていつでも残すことができます...
— Donald Duck

0

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": {}
  },

これは私にとってうまくいった一般的なヒントです。問題が発生すると、デフォルトのASP.NET Coreアプリケーションを作成して、project.jsonなどの依存関係を確認するために、ウェブサイトまたは空のウェブAPIを作成することがあります。多くの場合、その方法で多くのことをキャッチできます。上記の回答は適切ですが、誰かがASP.NET Coreが使用する一般的なテンプレート形式でロジックを分離したい場合に備えて、ここに書こうと思いました。


0

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

これを変更した後、依存関係は更新され、ビオラになります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.