dnx451 实际上意味着 .net 4.5

dnx451 actually means .net 4.5

我使用 Visual Studio 2015 RC

创建了两个项目
  1. 一个class库MyLib,其目标框架是.NET Framework 4.5.1
  2. 一个 ASP.NET 5 项目 MyWebApp 引用 MyLib in project.json:

    "frameworks": { "dnx451":{ "dependencies":{ "Lib01": "1.0.0-*" } }, }

当我尝试构建 MyWebApp 时,出现警告:

MSB3274:无法解析主要参考 "C:\MyWebApp\src\MyLib\bin\Debug\MyLib.dll",因为它是针对“.NETFramework,Version=v4.5.1”框架构建的。这是比当前目标框架“.NETFramework,Version=v4.5”更高的版本。

如果我将 MyLib 的目标框架更改为 4.5,警告将消失。

MyWebApp 似乎是针对 .net Framework 4.5 而不是 4.5.1? 如何使 MyWebApp 引用针对 .net 4.5.1 的库?

这个警告似乎意义不大。它仍然可见,即使 .net 版本的 Web 项目设置为大于库的版本,例如

"net46": {                
  "dependencies": {
    "Lib01": "1.0.0-*"
  }
}

另一个有趣的事情是,可以针对 .NET Framework 4.6(最新)构建库,并且仍然 build/run 并使用 dnx451 项目中的 classes(我已经通过了 readonly Queue available仅在 4.6 中作为从 lib 到 Web 应用程序的 IReadOnlyCollection)。

除此之外,据我所知 .net 4.5.1 还没有对 API 进行更改,并且测试 4.5 和 4.5.1 之间的差异并不容易

最后,如果你想摆脱警告,你可以创建 vNext 类型 class 库(包),然后从 ASP.NET 5 应用程序引用它,所以你的 class 库可以像web app一样使用dnx451