无法find与目标运行时兼容的框架.NETCoreApp = v1的运行时目标

我试图将一个Asp.Net核心RC1项目迁移到RC2,并且一直遵循这个文档 ,并且也遵循了DNX迁移到.NET CLI的说明。

我尝试dotnet run时出现以下错误:

无法find与目标运行时间之一“win10-x64,win81-x64,win8-x64,win7-x64”兼容的框架“.NETCoreAPP,版本= v1.0”的运行时目标。 可能的原因:

  1. 该项目尚未恢复或恢复失败 – 运行'dotnet恢复'
  2. 该项目没有在“运行时间”中列出“win10-x64,win81-x64,win7-x64”

我已经运行dotnet restore ,它似乎已经成功完成。

我已将所有相关软件包更新到RC2。

我应该完成错误信息所说的。 从RC1迁移时,我没有意识到我必须在我的project.json文件中指定runtimes project.json

在我的project.json我添加了以下部分:

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

我很高兴去。


2017年2月27日更新

如果您select将应用程序部署为Framework Dependent Deployment (FDD),则Visual Studio 2017 RC中的新项目模板不再需要指定运行时间(在project.json.csproj中)。

但是,如果您select使用Self-contained Deployment (SCD)来部署应用程序,则需要事先.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> 

请参阅此链接以获取更多信息,其中包括对这两种部署选项的详细说明,以及它们的优点和缺点。

在将VS2015核心模板更新到1.0.1后,我收到了这个错误。 这是因为我有一个PCL的目标是netstandard 1.4如果你不想指定每个运行时,只需将Microsoft.NETCore.App的依赖标记更改为:

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

在project.json中我改变了这个(添加types):

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

现在我可以再次构build:-)

更新:现在我可以再次build立,但不是“运行”的网站。

你需要确保你有运行时和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包pipe理器来更新我的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/zh-cn/dotnet/articles/core/tutorials/using-with-xplat-cli

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

您将会看到,您可以使用project.json中的依赖关系根元素中的以下片段构build一个完全可移植的版本。 没有必要指定运行时间,因为这是一个CORE级别的运行时间,应该是平台不可知的,或称为“依赖于框架”

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

或者您可以通过删除types:平台元素来构build多个目标平台(“自包含应用程序”):

将其添加到project.json中的依赖关系根元素

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

并将其添加为新的根级元素

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

多个目标需要提供称为“.NET核心运行时标识符(RID)”的平台名称。可以在上面的第二个链接中find这些名称。 它包括许多Windows,Linux和OS X的风格。

要了解各种部署选项,请阅读以下页面:

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

从上面的链接:

您可以为.NET Core应用程序创build两种types的部署:

依赖于框架的部署

正如其名称所暗示的,依赖于框架的部署(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包括一个可执行文件(例如,Windows平台上用于名为app的应用程序的app.exe),它是特定于平台的.NET Core主机的重命名版本,以及一个.dll文件(如app.dll),它是实际应用。

在我的情况下,我刚刚更新了所有的nuget软件包到他们的最新版本和nuget更改我的'Microsoft.NETCore.App'软件包引用到以下内容:

 "Microsoft.NETCore.App": "1.1.0" 

我改回到以下的forms,一切工作正常:

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

再见,我的生命3个小时….

如果你执行一个dotnet new并且看看输出项目json,你将会看到monikers已经改变了。

按照以下步骤对您的project.json进行更改:

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

我发现一个有用的链接从下面的网页svick评论: https : //github.com/dotnet/cli/issues/2442

我发现你需要在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": {} }, 

这是一个对我来说很好的一般技巧。 当我的东西坏了,我有时创build一个默认的ASP.NET核心应用程序,无论是网站或空Web API来看project.json和其他地方的依赖项。 你经常可以通过这种方式捕捉很多东西。 上面的答案是现成的,但我想我会写在这里,以防有人想要在ASP.NET Core使用的通用模板格式中分离更多的逻辑。

在使用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 } // } 

更改后,依赖关系将更新和中提琴。