ASP.NET5,MVC 6,Beta 7与VS 2015 RTM的兼容问题
温馨提示:本文杂而乱,最终不知所云。
Visual Studio 2015 RTM已经于2015年7月20号正式发布,我也在第一时间下载安装了起来。
虽然在5月份就开始使用RC版本,但是还是很期待正式版能带来一些新的功能和稳定性。
喜欢尝鲜的我免不了要折腾一下ASP.NET5,学习一下MVC6,当时的稳定版本是Beta5。
随便建一个MVC6项目感受了一下,很喜欢这种新的项目结构,唯一觉得不爽的就是发布的时候没有了FTP这一项,不知道以后会不会改进。
后来又试着把框架升级到当时还非稳定的Beta6,由于Beta5→Beta6有一些“重大改变”,所以需要修改几处代码,几经折腾总算胜利升级,过程中对DNVN,DNX,DNU等有了更直观的认识,也算没有瞎折腾。
好了,扯了半天还没扯到正题上来。
话说这后来几天忙着升级Windows10,待尘埃落定,看着新装好的WIN10+VS2015心情大好,准备再去研究一下ASP.NET5。
此时Beta6稳定版已如期发布,这是ASP.NET5的发布路线图:
使用稳定版显然不是我的风格,于是就像之前升beta6一样如法炮制把DNX以及各依赖模块升级到最新的Beta7。
然而这次却出现了一些奇怪的问题:
1.首先是项目内容里的引用模块列表直接没有了……
2.在项目属性里,“调试”这一项里的内容全部空白了……(+﹏+)~
3.各种不对劲,重新打开解决方案,重启VS都没有用,尝试编译项目出现如下错误:
请忽略里面的奇怪字符-_-。
具体错误就是:System.IO.FileNotFoundException : Microsoft.DNX.PackageManager啥的。
怎么会找不到文件呢,runtimes好好的躺着它该待的地方呢。
实在摸不着头脑,只好去GitHub上找找看有没有人提这个问题。果然看到这么一个Issues ,说的就是这个问题。
大概意思就是说DNX的一些程序集改名了,但是VS2015RTM没有做相应的修改,导致无法找到正确的路径什么什么的。
需要等Web Tools更新才能解决,然后给了一个临时的解决办法,就是添加一个系统环境变量:WEBPROJ_ENABLEBETA7RENAMES,值设置为0,就可以了。
我试了一下,果然奏效。
没过几天,Github上面又发一篇公告:Breaking DNX renames ,这次具体说了DNX的一些改名情况,如图:
个人感觉新名字确实好看多了\(^o^)/ 。
同时公告也说了怎么适应这个更改,首先就是安装那个Web Tools的更新,他们给放在ASP.NET5的首页上了:
就是这个 ASP.NET 5 preview(Beta6)。
这个需要说一下,点进去下载会看到挺多内容,大部分是语言包,按官方说明是要按需下载并按顺序安装:
首先是DotNetVersionManager-x64.msi(或x68),其实就是DNVM,你机器上的版本可能比这个还新,所以这个不装也行。
然后装那个最大的,WebToolsExtensionsVS14.msi,209M的本体,装起来吭哧吭哧还挺慢的。
最后根据需要下载一个语言包装上就行了,可是我没感到有什么卵用。
装过之后的前后对比:
可以看到ASP.NET and Web Tools的版本号已变,名字居然也变纯英文了,所以我很怀疑我刚才装的“语言包”有什么卵用。
* 如果之前设置了那个环境变量,需删之。
最后需要把DNX更新到最最新的版本,其实我经常会去myget.org看新的版本号(可能是病),你也可以去看看:aspnet vnext (小心传染)。
与 aspnet master 这个页面只提供稳定版不同,vnext提供的是各个程序集目前最新的开发版本,目前最新的开发版本是v1.0.0-beta7-12290。
同时这个页面上提供的NuGet feed Url:https://www.myget.org/F/aspnetvnext/ 是我们需要用到的。
打开VS2015,从工具→NuGet程序包管理器→程序包管理器控制台,打开Nuget控制台,如图:
可以看到程序包源:nuget.org ,默认只有这一个源,点右边的齿轮可以设置更多源。
很简单,在这个设置页面,按上面绿色的加号,把刚才上面提到的那个Feed Url加进去,名字随便起。
这样才能确保DNU在还原程序包的时候,能够找到我们所需要的最新版本的各个程序集,否则只能找到beta6的稳定版。
回到Nuget控制台,这里可以使用dnvm命令去升级DNX,可惜在这个控制台里不怎么好用,很多提示信息不会出来,不知道为什么,而且也不如果彩色的Power Shell酷炫。
所以我们干脆去外面打开Power Shell干活,记得用管理员身份执行:
你第一次在PS里执行DNVM,应该会遇到错误提示"xxxxxxxxx,因为在此系统中禁止执行脚本,xxxxxxxx"什么的,这个问题很好解决,
执行一下:set-ExecutionPolicy RemoteSigned ,选 a [all] ,就可以了,见:
关于DNVM的用法,就那么几个指令,这里不再赘述了,咱们赶紧把DNX更新好结束吧,现在越写越跑偏了。
Dnvm upgrade 指令可以更新最新的“稳定版”,比如现在的beta6,我们想要最新的开发版,就需要执行 dnvm upgrade -unstable ,这样就开始下载最新的DNX beta7了。
同时我们也需要64位的DNX,则再加一个参数: dnvm upgrade -unstable -arch x64 ,这样下载的就是非稳定的最新版的64位DNX:
稍等片刻就下好了,执行dnvm list可以看到现在机器里所有的DNX版本:
回到VS我们的项目里面,修改几处:
1,项目属性里,选择正确的DNX版本:
此处更改会直接体现到global.json配置文件中。
另外Properties\launchSettings.json也应该对应修改一下:
最后记得把project.json里的依赖项版本改成最新的,我是直接用*号了,因为我总升级DNX。
至此,BETA7就可以正常使用在VS中了,看看这令人愉悦的(正在还原……)和最新的程序集们o(∩_∩)o 哈哈:
The End
ASP.NET5,MVC 6,Beta 7与VS 2015 RTM的兼容问题的更多相关文章
- ASP.NET MVC 4 RC的JS/CSS打包压缩功能 Scripts.Render和Styles.Render
打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS ...
- ASP.NET MVC 4 RC的JS/CSS打包压缩功能 (转载)
ASP.NET MVC 4 RC的JS/CSS打包压缩功能 打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载 ...
- (转)ASP.NET MVC 4 RC的JS/CSS打包压缩功能
转自:http://www.cnblogs.com/shanyou/archive/2012/06/22/2558580.html 打包(Bundling)及压缩(Minification)指的是将多 ...
- ASP.NET MVC 4 RC的JS/CSS打包压缩功能
打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS ...
- 【转】ASP.NET MVC 4 RC的JS/CSS打包压缩功能
原文链接:http://www.cnblogs.com/shanyou/archive/2012/06/22/2558580.html 打包(Bundling)及压缩(Minification)指的是 ...
- ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第一篇:准备工作
摘要 本文将简要介绍这个文章系列的目的.形式及大体内容.并且完成开始学习这个系列前所必要的准备工作. 前言 ASP.NET MVC作为微软官方的MVC解决方案,推出有一段时间了.可 ...
- ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第五篇:MVC整合Ajax
摘要 本文将从完成“输入数据验证”这个功能出发,逐渐展开ASP.NET MVC与Ajax结合的方法.首先,本文将使用ASP.NET MVC提供的同步方式完成数据验证.而后,将分别结合ASP. ...
- ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第六篇:拦截器
摘要 本文将对“MVC公告发布系统”的发布公告功能添加日志功能和异常处理功能,借此来讨论ASP.NET MVC中拦截器的使用方法. 一个小难题 我们继续完善“MVC公告发布系统”, ...
- ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第四篇:传递表单数据
摘要 本文将完成我们“MVC公告发布系统”的公告发布功能,以此展示在ASP.NET MVC中如何传递处理表单的数据. 前言 通过前几篇文章,我们已经能比较自如的使用ASP.NET ...
随机推荐
- [译]Asp.net MVC 之 Contorllers(一)
Asp.net MVC contorllers 在Ajax全面开花的时代,ASP.NET Web Forms 开始慢慢变得落后.有人说,Ajax已经给了Asp.net致命一击.Ajax使越来越多的控制 ...
- 【VC++技术杂谈004】使用微软TTS语音引擎实现文本朗读
本文主要介绍如何使用微软TTS语音引擎实现文本朗读,以及生成wav格式的声音文件. 1.语音引擎及语音库的安装 TTS(Text-To-Speech)是指文本语音的简称,即通过TTS引擎把文本转化为语 ...
- 构建基于Chromium的应用程序
chromium是google chrome浏览器所采用的内核,最开始由苹果的webkit发展而出,由于webkit在发展上存在分歧,而google希望在开发上有更大的自由度,2013年google决 ...
- C#设计模式-享元模式
在软件开发过程,如果我们需要重复使用某个对象的时候,如果我们重复地使用new创建这个对象的话,这样我们在内存就需要多次地去申请内存空间了,这样可能会出现内存使用越来越多的情况,这样的问题是非常严重,然 ...
- WPF入门教程系列十五——WPF中的数据绑定(一)
使用Windows Presentation Foundation (WPF) 可以很方便的设计出强大的用户界面,同时 WPF提供了数据绑定功能.WPF的数据绑定跟Winform与ASP.NET中的数 ...
- JS-underfined is not a function
- Android仿微信二维码扫描
转载:http://blog.csdn.net/xiaanming/article/details/10163203 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一 ...
- CSS中div覆盖另一个div
将一个div覆盖在另一个div上有两种手段:一是设置margin为负值,二是设置绝对定位. 可以根个人情况设置z-index的值 1->position 为absolute的情况 <htm ...
- .NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一)
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下FluentValidation验证组件.那里只是概述了一下,并没有对其使用和强大功能做深入研究 ...
- 创建外网 ext_net - 每天5分钟玩转 OpenStack(104)
虽然外部网络是已经存在的网络,但我们还是需要在 Neutron 中定义外部网络的对象,这样 router 才知道如何将租户网络和外部网络连接起来. 上一节我们已经为创建外部网络配置了ML2,本节将通过 ...