我可以在 .NET Standard class 库中使用动态吗?

Can I use dynamic in a .NET Standard class library?

我很难尝试从常规 Windows 桌面开发迁移到 ASP.NET Core MVC。我遇到的一个问题是创建我的解决方案。我想从 VS 2015 附带的默认项目中删除与 UI 无关的所有内容,并放入一个单独的项目中。

我注意到 ASP MVC 核心引用了 .NETCoreApp,Class 库项目引用了 .NETStandard

我的问题是我需要使用 class 库中的 dynamic 关键字,但它不支持。 MVC项目支持没有任何问题。我想这是因为不同的 .NET 版本。

  1. NETStandard 和 NETCoreApp 有什么区别?

  2. 我可以创建一个 class 库,它使用与 MVC 项目相同的引用,以便我可以在上面使用 dynamic 关键字吗?

  3. 或者我应该坚持将所有域、基础设施等放在同一个地方的单一项目解决方案吗?

是的,可以将非UI 代码放入单独的库中。如您所料,netcoreapp1.0 用于应用程序(控制台或 Web),netstandard1.X 用于 class 库。

.NET Standard class 库不应该对 dynamic 关键字有任何问题。不过,您确实需要引用 NETStandard.Library。这是一个准系统工作库示例:

MyLibrary/project.json

{
   "description": "My awesome library",
   "dependencies": {
      "NETStandard.Library": "1.6.0"
   },
   "frameworks": {
      "netstandard1.3": { }
   }
}

如果您的 ASP.NET 核心 Web 应用程序是同一解决方案的一部分,则它可以引用此库:

{
  (... other stuff)

  "dependencies": {
    "MyLibrary": {
      "target": "project"
    }
  }
}