无法find与目标运行时兼容的框架.NETCoreApp = v1的运行时目标
我试图将一个Asp.Net核心RC1项目迁移到RC2,并且一直遵循这个文档 ,并且也遵循了DNX迁移到.NET CLI的说明。
我尝试dotnet run
时出现以下错误:
无法find与目标运行时间之一“win10-x64,win81-x64,win8-x64,win7-x64”兼容的框架“.NETCoreAPP,版本= v1.0”的运行时目标。 可能的原因:
- 该项目尚未恢复或恢复失败 – 运行'dotnet恢复'
- 该项目没有在“运行时间”中列出“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运行时。
我收到了这个错误,因为我在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 } // }
更改后,依赖关系将更新和中提琴。
- 内容处理:“内联”和“附件”之间有什么区别?
- 什么是jQuery Unobtrusivevalidation?
- Datatable to html Table
- 是什么导致这个“Base-64字符数组长度无效”
- 如何解决我的ASP.Net MVC应用程序iisreset后发生的AntiForgeryTokenexception?
- 如何解决ASP.NET错误“文件'nnn.aspx'没有被预编译,不能被请求。”?
- 什么导致“会话状态已经创build了一个会话ID,但无法保存,因为应答已经被刷新了。”
- Session.Abandon()和Session.Clear()之间的区别是什么
- 如何lockingASP.NET MVC中的path?