加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 添加.net 4.5对Asp.net vNext项目的引用

发布时间:2020-12-16 03:29:55 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试添加.net 45引用到asp.net 5启动web项目……我得到了这个错误. 解决方法 虽然您可以以类似于示例中的方式来定位多个框架,但我认为如果没有一些重大更改,您可能无法在.NET 4.5下运行StarterWeb项目. 处理多个框架时,如果将鼠标悬停在包含错误的代码
我正在尝试添加.net 45引用到asp.net 5启动web项目……我得到了这个错误.

解决方法

虽然您可以以类似于示例中的方式来定位多个框架,但我认为如果没有一些重大更改,您可能无法在.NET 4.5下运行StarterWeb项目.

处理多个框架时,如果将鼠标悬停在包含错误的代码上,Visual Studio 2015实际上会提供很多帮助:

让StarterWeb项目工作的一个明显的困难是在MVC 5和6之间,许多部分已经被移动到新的命名空间并分解成不同的程序集.最值得注意的是,MVC 5软件包依赖于System.Web,而StarterWeb项目使用的6.0 beta则不依赖于System.Web.移动MVC库后,Authorize属性现在位于Microsoft.Aspnet.Mvc中,而在早期版本中,它属于System.Web.Mvc.

虽然理论上你可能会在框架中定位不同版本的MVC,但在实践中可能不值得这么麻烦.即使你找到授权,也不能保证它将是“相同的”,即使它编译.

如果这是您想要的路径(或者只是在定位多个框架时),您可以控制project.json文件中哪个框架使用哪些包.

如果包与所有目标框架兼容,您可以将它们保留在project.json文件的父依赖项区域中,但是当它们特定于给定框架时,??您需要将子依赖项部分添加到该特定框架的配置中.对于.NET 4.5,您还可以通过添加frameworkAssemblies部分来添加熟悉的框架程序集(而不是NuGet程序包).

你最终会得到这样的东西:

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

当您定位这些不同的框架时,您经常会发现至少一些代码必须特定于框架.要处理此问题,您可以为各种using语句添加编译器指令,以及依赖于仅在一个框架或另一个框架中可用的包的实际代码.

例如,您最终可能会看到如下所示的区域:

SomeType result;

#if ASPNET50
   result = SomeMethodNotAvailableIn45( );
#endif

#if NET45
   result = EquivalentMethodIn45( );
#endif

显然这是过于简单化,但它给你基本的公式:

>将共享依赖项放在根依赖项部分中
>将特定于特定框架的依赖项放在其自己的依赖项部分中
>将编译器指令用于无法共享的特定于框架的代码

我还建议你看看Rick Strahl的优秀blog post,看看有关更多细节和大量截图的多个框架的精彩演练.新项目系统的一个很好的特性是它可以轻松地为您选择的所有框架创建一个NuGet包,并且他也会详细介绍它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读