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

Can not find runtime target for framework .NETCoreApp=v1 compatible with one of the target runtimes for some projects

我有许多 .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.

我在这里找到的 post 似乎有所帮助

我将以下内容添加到失败的项目中:

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

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

这个运行时间定义到底是什么意思?它如何影响我 运行 在其他 os 上的能力,例如 linux 或 mac?

What exactly does this runtime definition means?

runtimes 列出了我们的包支持的运行时。 独立部署需要列出运行时。当部署有自己的运行时时,它是自包含的。

我们如何知道我们的部署是否独立? dependencies 列出我们的包所依赖的包。这些依赖关系分为三种类型。

  • build 该包仅用于构建,不是部署的一部分
  • platform 软件包将依赖于预安装的运行时
  • default 两者都不是

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

why was this happening only on some projects?

它只会发生在独立部署的项目中。如果您查看那些不需要 runtimes 属性 的项目,您会发现它们要么是 class 库,要么依赖于框架。

独立部署

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

class图书馆

 "frameworks": {
   "netstandard1.6": {}
 }

how does it affect my ability to run on other os like linux or mac?

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

另见