我正在尝试将Asp.Net Core RC1项目迁移到RC2并且一直关注此documentation并且还跟随instructions进行DNX迁移到.NET CLI。
当我尝试dotnet run
时,我收到以下错误:
找不到框架的运行时目标' .NETCoreAPP,Version = v1.0' 兼容其中一个目标运行时:' win10-x64,win81-x64, win8-x64,win7-x64'。可能的原因:
- 项目尚未恢复或恢复失败-run' dotnet restore'
- 该项目未列出' win10-x64,win81-x64,win7-x64'在'运行时'
我已经运行dotnet restore
,似乎已成功完成。
我已将所有相关软件包更新为RC2。
答案 0 :(得分:290)
我应该完全按照错误消息说的做了。从RC1迁移时,我没有意识到我必须在runtimes
文件中指定project.json
部分。
在我的project.json
中,我添加了以下部分:
"runtimes": {
"win10-x64": { }
}
我很高兴。
2017年2月27日更新
如果您选择将应用程序部署为project.json
,则Visual Studio 2017 RC中的新项目模板不再需要提前指定运行时间(.csproj
或Framework Dependent Deployment
)( FDD)。
但是,如果您选择使用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>
请参阅this link以获取更多信息,其中包括对这两种部署选项的详细说明,以及它们的优缺点。
答案 1 :(得分:76)
我将VS2015核心模板更新为1.0.1后收到此错误。这是因为如果您不想指定每个运行时,我有一个针对netstandard 1.4
的PCL,只需将Microsoft.NETCore.App
的依赖关系标记更改为:
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"
}
答案 2 :(得分: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": {}
}
再见,平台定义!
答案 3 :(得分:15)
如果您阅读以下两个链接:
首先,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中依赖项根元素中的以下代码段构建完全可移植的版本。没有必要指定运行时,因为这是一个CORE级别的运行时,它应该是平台无关的,或称为“依赖于框架”
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"
}
或者您可以通过删除类型: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)”的平台名称。可以在上面的第二个链接中找到这些名称的列表。它包括许多种类的Windows,Linux和OS X.
为了更好地了解各种部署选项,您也可以阅读此页面:
https://docs.microsoft.com/en-us/dotnet/articles/core/deploying/index
从以上链接:
您可以为.NET Core应用程序创建两种类型的部署:
依赖于框架的部署
顾名思义,依赖于框架的部署(FDD)依赖于目标系统上存在的共享系统范围的.NET Core版本。由于.NET Core已经存在,因此您的应用程序也可以在.NET Core的安装之间移植。您的应用程序仅包含自己的代码以及.NET Core库之外的任何第三方依赖项。 FDD包含.dll文件,可以使用命令行中的dotnet实用程序启动。例如,dotnet app.dll运行名为app的应用程序。
自包含部署
与FDD不同,自包含部署(SCD)不依赖于目标系统上存在的任何共享组件。所有组件(包括.NET Core库和.NET Core运行时)都包含在应用程序中,并与其他.NET Core应用程序隔离。 SCD包括可执行文件(例如Windows平台上的app.exe,名为app的应用程序),它是特定于平台的.NET Core主机的重命名版本,以及.dll文件(例如app.dll),它是实际应用。
答案 4 :(得分:9)
在我的情况下,我刚刚将所有nuget软件包更新到他们的最新版本,并且nuget改变了我的&#39; Microsoft.NETCore.App&#39;包引用如下:
"Microsoft.NETCore.App": "1.1.0"
我将其更改回以下表格,一切正常:
"Microsoft.NETCore.App": {
"version": "1.1.0",
"type": "platform"
}
再见3小时......
答案 5 :(得分:4)
如果你执行一个新的dotnet并查看输出项目json,你会发现这些标记已经改变了。
对project.json进行如下更改:
"dependencies": {},
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"
}
},
"imports": "dnxcore50"
}
}
答案 6 :(得分:0)
我在以下页面的svick发现了一条有用的链接: https://github.com/dotnet/cli/issues/2442
答案 7 :(得分: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应用程序,无论是网站还是空的web api,都可以查看project.json和其他地方的依赖项。你经常可以通过这种方式捕获很多东西。上面的答案是现实的,但我想我会写这个,以防有人想要在ASP.NET核心使用的一般模板格式中更多地分离逻辑。
答案 8 :(得分: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
} //
}
更改后,依赖关系将更新和中提琴。