无法找到框架的运行时目标.NETCoreApp = v1与某些项目的目标运行时之一兼容

时间:2016-10-22 11:18:12

标签: .net asp.net-core .net-core asp.net-core-1.0

我有许多.NET Core项目的解决方案。我对所有项目进行了NuGet更新,现在当我尝试构建时,我得到以下错误(对于某些项目 - 并非全部):

Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible with one of the target runtimes: 'win10-x64, win81-x64, win8-x64, win7-x64'. Possible causes:
1. The project has not been restored or restore failed - run `dotnet restore`
2. The project does not list one of 'win10-x64, win81-x64, win8-x64, win7-x64' in the 'runtimes' section.
3. You may be trying to publish a library, which is not supported. Use `dotnet pack` to distribute libraries.

似乎有帮助的是我在Can not find runtime target for framework .NETCoreApp=v1 compatible with one of the target runtimes

找到的帖子

我在失败的项目中添加了以下内容:

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

这似乎解决了这个问题。但我的问题是,为什么这只发生在一些项目上呢?没有发出错误的项目在project.json文件中没有这样的运行时定义。

此运行时定义到底意味着什么?它如何影响我在linux或mac等其他操作系统上运行的能力?

1 个答案:

答案 0 :(得分:14)

  

此运行时定义到底意味着什么?

set.seed(0) n <- 50 d <- data.frame(x = rnorm(n, -.7, .5), y = rnorm(n, 0, .8)) ggplot(d, aes(x, y)) + geom_point() + stat_density_2d(aes(fill = ..level..), alpha=.1, geom = "polygon") 列出了我们的包支持的运行时。 自包含部署需要列出运行时。部署在带来自己的运行时时是自包含的。

我们如何知道我们的部署是否自包含? runtimes列出我们的包依赖的包。这些依赖关系有三种类型。

  • dependencies该软件包仅用于构建,不属于部署
  • build包将取决于预安装的运行时
  • platform这两个

如果我们的default依赖项属于"Microsoft.NETCore.App"类型,那么它是自包含的,我们需要自带运行时。如果它是default类型,则它取决于框架。

  

为什么这只发生在一些项目上?

只会在自包含部署的项目中发生。如果你看那些不需要platform属性的项目,你会发现它们是类库或框架相关的。

自包含部署

runtimes

框架相关部署

 "frameworks": {
   "netcoreapp1.0": {
     "dependencies": {
       "Microsoft.NETCore.App": {
          "version": "1.0.0"
       }
     }
   }
 },
 "runtimes": {
   "win10-x64": {},
   "osx.10.10-x64": {}
 }

类库

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

它如何影响我在linux或mac等其他操作系统上运行的能力?

没有。 Windows,Mac OS和Linux都可以预先安装运行时,或让应用程序自带运行时。

另见