本月16号,MS发布了 .NET Core 1.1。作为一个用贯MS产品的小盆友,我第一时间就把相关的安装包下载下来了,然后果断安装(入坑)。
我猜你来看这篇博客可能遇到了和我一样的问题。
问题0:正确的安装顺需
正确的顺序在MS的dotnet Core官网上可以找到,请根据自己的VS版本对号入座。
如果你觉得这个太长或者存在疑问,简短的版本是:
1、VS2015
1. 检查VS2015 是否已经安装了Update3.3:打开VS2015,然后点击【帮助】-【关于Microsoft Visual Studio】,左侧Logo下面的版本号如果小于14.0.25431.01,需要安装Update3.3;如果版本号后不是Update3,则需要先安装Update3,然后安装Update3.3.
2. 下载安装 .NET Core 1.1 SDK (x64 / x86)
3. 下载安装DotNetCore.1.0.1-VS2015Tools.Preview2.0.3
2、VS2017RC
安装的时候选中【NET Core and Docker (Preview)】即可
由于VS2017安装的是DotnetCore1.0.0-preview3-004056,而且使用csproj格式的项目文件,所以和VS2015的体验会存在差异,安装前请三思。
问题1:DotNetCore.1.0.1-VS2015Tools.Preview2.0.3文件安装不正常
这个问题在9月份发布1.0.1的时候,估计很多人都遇到了。从症状上看似乎是MS忘记更换自家已经被吊销的SSL证书了,当然不排除被GFW不小心干掉的可能。好在经过两个多月的不懈努力,这个证书似乎已经正常了,所以现在主要拼的是网速了。
如果你的网络环境不理想,可以在网速较好的环境下获取DotNetCore.1.0.1-VS2015Tools.Preview2.0.3的脱机布局,然后分发安装,具体的方法如下:
命令格式
\>DotNetCore.1.0.1-VS2015Tools.Preview2.0.3.exe /layout <布局存放的目录>
sample:
\>DotNetCore.1.0.1-VS2015Tools.Preview2.0.3/exe /layout .\DotnetCoreTooling110
按照上图的方式执行,可以在当前目录创建一个DotnetCoreTooling110目录,你只要运行这个目录下的DotNetCore.1.0.1-VS2015Tools.Preview2.0.3.exe文件就可以放心安装了。
问题2:创建、升级现有项目
因为这次发布的是SDK和Tooling,没有更新模板,所以现有Dotnet Core项目所使用的模板还是原来1.0.1的。不过不用担心,ASP.NET Core 1.1 RTM的介绍里具体的模板升级方法:
1、project.json文集按中的【netcoreapp】和【Microsoft.NetCore.App】版本从1.0 升级到1.1,然后保存project.json文件
2、升级Dependency中的nuget包,建议升级前先备份一下现有的project.json文件。因为我曾经遇到过升级失败,还把project文件弄坏的情况。有备无患嘛。
问题3:升级后编译失败,提示无法找到运行时针对的框架“.NetCoreApp,Version=1.1”兼容的运行时
VS报错后,还给了我们三个错误的可能诱因。第一个不考虑了,因为没有还原所有nuget包的话,说明项目的状态还停留在问题2。如果确认了真的是还原失败,则应该继续求改project.json文件。
第二个方法和第三个方法实际上原理一样,就是希望开发人员给出一个RID,这样VS就知道对应的运行环境是什么了。但是这样做就把现在的一个FDD程序变成了SCD程序。
这里不讨论两种模式的优劣了,只展示一下如何实现:
FDD:
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.1.0",
"type": "platform"
},……
}
"frameworks": {
"netcoreapp1.1": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
}
}
SCD:
{
"frameworks": {
"netcoreapp1.1": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
},
"runtimes": {
"win10-x64": {}
}
}
结束语
以上是一周以来尝鲜DotnetCore1.1遇到的问题及解决办法,希望可以帮助到大家,并尽快体验1.1带来的759倍速度提升,同时欢迎各位拍砖.