PIC*_*UFY 5 asp.net-mvc asp.net-core
我正在尝试添加.net 45引用到asp.net 5启动web项目......我得到了这个错误.
小智 4
虽然您确实可以按照与示例中类似的方式针对多个框架,但我认为如果不进行一些重大更改,您可能无法让 StarterWeb 项目在 .NET 4.5 下运行。
在处理多个框架时,如果将鼠标悬停在有错误的代码上,Visual Studio 2015 实际上会提供很多帮助:

让 StarterWeb 项目正常运行的一个明显困难是,在 MVC 5 和 6 之间,许多部分已移至新的命名空间并分解为不同的程序集。最值得注意的是,MVC 5 包依赖于 System.Web,而 StarterWeb 项目使用的 6.0 beta 则不然。随着 MVC 库的移动,该Authorize属性现在位于 Microsoft.Aspnet.Mvc 中,而在早期版本中它属于 System.Web.Mvc。
虽然理论上您可能可以跨框架使用不同版本的 MVC,但实际上这可能不值得这么麻烦。即使您找到Authorize,也不能保证它将是“相同”的,即使它可以编译。
如果这是您想要走的路线(或者只是在一般情况下针对多个框架时),您可以控制文件中的哪个框架使用哪些包project.json。
如果包与所有目标框架兼容,您可以将它们保留在文件dependencies的父区域中project.json,但是当它们特定于给定框架时,您需要dependencies向该特定框架的配置添加子部分。对于 .NET 4.5,您还可以通过添加部分来添加熟悉的框架程序集(而不是 NuGet 包)frameworkAssemblies。
你最终会得到这样的结果:
"dependencies": {
"SomeCommonPackage":"1.0.0"
},
"frameworks": {
"aspnet50":{
"dependencies":{
"Aspnet50SpecificPackage":"1.0.0"
},
"net45":{
"dependencies":{
"NET45SpecificPackage":"1.0.0"
},
"frameworkAssemblies":{
"System.Web":"4.0.0.0"
}
Run Code Online (Sandbox Code Playgroud)
当您针对这些不同的框架时,您经常会发现至少某些代码必须特定于框架。为了解决这个问题,您可以为各种using语句添加编译器指令,以及依赖于仅在一个框架或另一个框架中可用的包的实际代码。
例如,您最终可能会得到如下所示的区域:
SomeType result;
#if ASPNET50
result = SomeMethodNotAvailableIn45( );
#endif
#if NET45
result = EquivalentMethodIn45( );
#endif
Run Code Online (Sandbox Code Playgroud)
显然这过于简单化,但它为您提供了基本公式:
dependencies部分dependencies部分中我还建议您看一下 Rick Strahl 的优秀博客文章,了解针对多个框架的精彩演练,其中包含更多细节和大量屏幕截图。新项目系统的一个很好的功能是,它可以轻松地为您选择的所有目标框架创建一个 NuGet 包,他也对此进行了更详细的介绍。
| 归档时间: |
|
| 查看次数: |
1728 次 |
| 最近记录: |