我可以在.NET Standard类库中使用dynamic吗?

RBa*_*iak 8 .net c# asp.net-core-mvc .net-core

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

我注意到ASP MVC Core引用.NETCoreApp和类库项目引用.NETStandard.

我的问题是我需要在类库中使用动态keyworkd并且它不支持它.MVC项目支持没有任何问题.我想这是因为不同的.NET版本.

  1. NETStandard和NETCoreApp有什么区别?

  2. 我可以创建一个使用与MVC项目相同的引用的类库,这样我就可以在其上使用dynamic关键字吗?

  3. 或者我应该在同一个地方坚持使用所有域,基础设施等的一个项目解决方案?

Nat*_*ini 5

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

.NET Standard 类库不应存在该dynamic关键字的任何问题。不过,您确实需要参考NETStandard.Library。这是一个准系统工作库示例:

我的图书馆/project.json

{
   "description": "My awesome library",
   "dependencies": {
      "NETStandard.Library": "1.6.0"
   },
   "frameworks": {
      "netstandard1.3": { }
   }
}
Run Code Online (Sandbox Code Playgroud)

如果您的 ASP.NET Core Web 应用程序属于同一解决方案的一部分,则可以引用此库,如下所示:

{
  (... other stuff)

  "dependencies": {
    "MyLibrary": {
      "target": "project"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)