怎么卸载.dotnet core 卸载rc版本

自由、创新、研究、探索
Linux/Windows Mono/DotNet [ Open Source .NET Development/ 使用开源工具进行DotNet软件开发]锐意进取,志存高远.成就梦想,只争朝夕.从你开始,创新世界.【That I exist is a perpetual supprise which is life. Focus on eCommerce】
前几天.NET Core发布了.NET Core 1.0.1 R2 预览版,之前想着有时间尝试下.NET Core。由于各种原因,就没有初试。刚好,前几天看到.NET Core发布新版本了,决定要去一探究竟。于是乎,就立马去官网查找相关的信息,为初探做准备。
下面就开始今天的内容,有两个部分:安装和创建示例程序。
本人使用的是Windows 10&64位系统,安装过Visual Studio 2015,如果没有安装,请先安装。
下载安装文件
进入.NET Core官网,,,下载所需的安装文件。需要下载的文件:
Windows系统直接下载安装文件即可。Windows (Server Hosting)的作用相当于iis,是.NET Core Web项目的服务宿主程序,即可以直接使用Server Hosting运行Web项目。
安装.NET Core
提示:请先卸载.NET Core之前的版本,否则会报错。
报错信息:The project is configured to use .NET Core SDK version 1.0.0-preview1-002702 which is not installed or cannot be found under the path C:\Program Files\dotnet\bin. These components are required to build and run this project. NetCoreR2.Sample.ConsoleApp
双击下载的DotNetCore.1.0.0.RC2-Runtime-x64.exe,选择同意协议,然后点击"Insteall"安装,等待安装结束。
安装.NET Core SDK
双击下载的DotNetCore.1.0.0.RC2-SDK.Preview1-x64.exe,选择同意协议,然后点击"Insteall"安装,等待安装结束。
安装Server Hosting
双击下载的DotNetCore.1.0.0.RC2-WindowsHosting.exe,选择同意协议,然后点击"Insteall"安装,等待安装结束。
安装.NET Core VS2015Tools
双击下载的DotNetCore.1.0.0.RC2-VS2015Tools.Preview1.exe,选择同意协议,然后点击"Insteall"安装,等待安装结束。
安装NuGet Manager extension for Visual Studio
双击下载的NuGet.Tools.vsix,选择同意协议,然后点击"Insteall"安装,等待安装结束。
示例有控制台程序和ASP.NET Core Web程序。
.NET Core控制台程序
打开Visual Studio 2015,新建一个项目:文件-新建-项目
在左侧模板选择.NET Core,右侧选择控制台应用程序(.NET Core)。输入名称NetCoreR2.Sample.ConsoleApp,点击"确定"按钮。OK,.NET Core控制台应用程序创建完成。
打开Program.cs文件,写入代码,运行。
using System.Collections.G
using System.L
using System.Threading.T
namespace NetCoreR2.Sample.ConsoleApp
public class Program
public static void Main(string[] args)
Console.WriteLine("Hello .NET Core 1.0.0 R2 Console App!");
Console.ReadLine();
如果在这里提示
ASP.NET Core Web项目
在上面的解决方案上新建一个ASP.NET Core Web项目:添加-新建项目
选择ASP.NET Core Web Application(.NET Core),点击"确定",创建项目。
选择Web 应用程序
更改身份验证为:不进行身份验证,然后确定。
创建好项目后,等待Neget包还原,然后按"F5",调试运行。可以选择IIS或WindowsHosting,在这选用后者。
接下来,自己写一个控制器,并显示信息。
创建一个HelloController控制器,添加一个Index的Action:
using System.Collections.G
using System.L
using System.Threading.T
using Microsoft.AspNetCore.M
创建对应的视图文件,写入代码:
ViewData["Title"] = "Hello Index Page";
&h3&@ViewData["Msg"].ToString()&/h3&
本文就介绍到这里。如有疑问请联系我。
阅读(...) 评论()
随笔 - 16266
评论 - 14571.NET Core环境搭建
安装.NET Core:
.NET Core 包括.NET Core Runtime 和 .NET Core SDK:
NET Core = 应用运行依赖的 .NET Core Runtime
NET Core SDK = 使用.NET Core开发应用.NET Core Runtime 和 SDK+CLI(Software Development Kit/Command Line Interface) 工具
下载地址请到dotnet官方网站&(dot &net),非常的好记,这个网站也是你入门学.NET Core的入口网站,记住这是个必须要去网站。.NET Core 下载的具体地址:,这里还列出了注意事项:
    a.虽然.NET Core Runtime 和基础库已经1.0 RTM,但是开发工具链(.NET Core CLI,Visual studio 和Visual Studio Code) 还是预览版,具体可以参看
&    b.在Windows Servers上部署应用 ,可以单独安装ASP.NET Core Module for IIS 而不需要安装.NET Core runtime,可以通过命令行DotNetCore.1.0.0-WindowsHosting.exe OPT_INSTALL_REDIST=0
    &c.Mac 系统的最低要求是macOS 10.11 (El Capitan)
    &d..NET Core 在Red Hat 系列服务器上支持的要 RHEL 7 Server,包括CentOS 7 以上,具体参看&
    &e..NET Core 在Ubuntu上面的支持 需要 Ubuntu 14.04 LTS 和& Ubuntu 16.04 LTS
    &f.如果之前安装了.NET Core的beta,rc1,rc2的版本,在安装之前需要把他们卸载掉,具体参见&
.NET Core 的具体安装方法可以参看文章&。
还有Core的CLI命令请参照张大大的博客:
上面一段也是摘自张大大的博客,总结的比我好太多了。
2.NET Core基本介绍
2.1 什么是ASP.NET Core
ASP.NET Core 是一个全新的开源、跨平台框架,可以用它来构建基于网络连接的现代云应用程序,比如:Web 应用,IoT(Internet Of Things,物联网)应用和移动后端等。ASP.NET Core可以运行在 .NET Core 或完整的 .NET Framework 之上,其架构为发布到云端或本地运行的应用提供了一个最佳的开发框架,由开销很小的模块化组件构成,这就保持了你构造解决方案的灵活性。你可以跨平台地在Windows、Mac和Linux等设备上开发和运行你的 ASP.NET Core 应用。ASP.NET Core 的源代码已经在&上托管。
2.2 ASP.NET Core的改进
1) & &在统一的方案中构建Web UI 和 Web API
2)&&& 集成现代客户端开发框架和工作流
3) & &以云就绪环境为基础的配置系统
4)&&& 内置依赖注入
5) & &全新、轻量级、模块化的HTTP请求管道
6) & &在IIS或在自己托管进程中托管应用程序的能力。
7)&&& 以.NET Core为基础,支持并行应用版本控制。
8)&&& 完全以 NuGet 程序包方式分发
9) & &一组全新的工具,简化现代Web 开发
10) &在Windows、Mac和Linux等设备上开发和运行 ASP.NET应用
11) &开放源代码和社区聚焦
2.3 ASP.NET Core 项目解读
如上图:一个ASP.NET Core应用其实就是一个简单的控制台应用程序,只是它在Main方法中创建了一个 Web 服务器而已,
using System.IO;
using Microsoft.AspNetCore.H
namespace ProgrammersLiveShow
/// &summary&
/// 系统初始化信息
/// &/summary&
/// 修改记录:
public class Program
public static void Main(string[] args)
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup&Startup&()
host.Run();
Main 使用一个遵循生成器模式的 WebHostBuilder来创建Web应用程序宿主。生成器具有定义web服务器(UseKestrel)和指定启动类(UseStartup&Startup&())的方法。 上述示例使用的是 Kestrel Web 服务器,但你可以指定其他类型的Web 服务器。在下一节中将展示更多 UseStartup 相关的信息。WebHostBuilder 提供了大量的选项方法,包括指定宿主为 IIS 和 IIS Express 服务器的 UseIISIntegration,指定内容根目录的 UseContentRoot等。其中Build 和Run方法用于构建 IWebHost的实例,它将被用来挂载应用并开始监听到来的HTTP请求。
Startup类:
WebHostBuilder上的Startup方法用来指定你的应用程序的启动类。
该类是定义请求处理管道的地方,也是配置应用需要的服务的地方。Startup类必须是public的,而且必须包含ConfigureServices(IServiceCollection services)和Configure(IApplicationBuilder app)方法。
& & & a)&&&& ConfigureServices& 定义应用程序中用到的服务(比如:ASP.NET MVC Core 框架,Entity Framework Core,Identity等等)
& & & b)&&& &Configure&&&& 定义请求处理管道中的中间件
Startup 类的 执行顺序:构造 -& configureServices-&configure。
详情请参考:,总结的很不错。
project.json
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0"
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Pls.Service": {
"target": "project"
"imports": [
"dotnet5.6",
"portable-net45+win8"
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
"publishOptions": {
"include": [
"wwwroot",
"appsettings.json",
"web.config",
"nlog.config"
"exclude": [ "bin" ]
&具体的解释请看&(中文版的适合英语不好的人翻翻看)。我挑几个上面用到的解释解释:
dependencies:依赖项,定义项目的包依赖项的一个对象,此对象的每个键是包名称,每个值包含版本信息。有关详细信息,请参阅 NuGet 文档站点上的&文章,类型是Object。
tools:定义用作当前项目工具(而不是用作引用)的包依赖项的一个对象。 此处定义的包可用于生成过程中运行的脚本,但不可访问项目自身的代码,类型是Object。
frameworks:框架,指定此项目支持的框架,如 .NET Framework 或通用 Windows 平台 (UWP)。 必须是有效的目标框架名字对象 (TFM)。 每个值都是一个对象,可以包含特定于此框架的信息以及以下各部分中的属性,类型是Object
target:限制依赖项以仅匹配&project&或&package,类型是String
buildOptions:其属性控制编译各个方面的一个对象。 下面列出了有效属性。 也可以按中所述目标框架进行指定,类型是Object。
runtimeOptions:指定在初始化期间向运行时提供的参数,类型是Object。
configProperties:包含用于配置运行时和框架的配置属性,类型是Object。
System.GC.Server:若要启用服务器垃圾回收,则为&true;否则为&false。 默认值为&false。
emitEntryPoint:若要创建可执行文件,则为&true;否则为&false。 默认值为&false。
preserveCompilationContext:若要保留引用程序集和其他上下文数据以实现运行时编译,则为&true;否则为&false。 默认值为&false。
publishOptions:包含编译配置的属性的一个对象,类型是 Object。
include:包含文件以及文件夹,类型是String 或带有通配模式的 String[]。
exclude:指定要从生成中排除的文件,类型是String 或带有通配模式的 String[]。
初心商城:& MVC/.NET群:
阅读(...) 评论()公司的项目一直采用.NET框架来开发Web项目。目前基础类库均为.NET Framework 4.6.2版本。Caching,&Logging,DependencyInjection,Configuration等基础设施相关的依赖库一直和官方保持同步,目前是1.1版本。.NET Core越来越趋于稳定,新的开发工具也在三月份发布。因此,计划将.NET Framework移植至.NET Core/Strandard。目的是使基于.NET开发的Web应用可以跨平台运行。
按应用场景将公司的项目分为基础类库,基础服务和应用项目。基础类库以包的形式提供各类基础功能。基础服务通过Wcf项目搭建或者通过Web API项目搭建。应用项目则是Web Mvc项目为主。基础类库和基础服务是以一个一个解决方案的形式存在。每个解决方案的结构,包含一个或者多个类库项目,一个或多个控制台项目,它们分别用于功能实现、单元测试、功能演示。如果全部要移植,那么优先级应该是基础类库 -& 基础服务 -& 应用项目。此次移植的对象是基础类库。
基础类库最终会以包的形式通过NuGet发布出去,目前只面向.NET Framework框架。移植的目标之一,是让包也能被面向.NET Core、.NET Standard框架的项目引用。结合,我选择了直接迁移的方案。即直接将项目文件转换为新的基于.NET Core的项目文件。下面详细说明移植的细节。
1. 新建基于.NET Core的项目。
首先重命名现有项目文件*.csproj为*.Net46.csproj。然后使用VS2017新建一个新的基于.NET Core的项目,项目类型可以是“类库(.Net Core)”或者“类库(.Net Standard)”。注意,VS2017会提示存在同名目录,所以创建时可以输入一个不同的名称,然后手工调整回来。
2. 编辑项目文件,使之支持面向多个目标框架。
通过VS2017 RC新建的项目,“类库(.Net Core)”或者“类库(.Net Standard)”,默认只有一个目标框架。我们可以编辑项目文件,使之支持面向多个目标框架。如支持目标框架为.NET Standard 1.4、.Net Core App 1.0和.NET Framework 4.5,则这样来修改。
&Project Sdk="Microsoft.NET.Sdk"&
&PropertyGroup&
  &TargetFrameworks&netstandard1.4;netcoreapp1.0;net45&/TargetFrameworks&
&/PropertyGroup&
&/Project&
注意,官方文档中提供了,你可以查询更多其他的目标框架。如果要兼容较低版本的框架,则目标框架版本不宜设置过高。如“net45”可用于.NET Framework 4.5 ~ 4.6.2等版本。如“net46”则只能用于.NET Framework 4.6 ~ 4.6.2等版本。
3. 修改应用程序代码相关API,使之支持多个目标框架。
a. 因目标框架提供的API不相同。故必要时可添加条件编译符号以便支持不同的运行时版本。
以下是常见的条件编译符号列表。
.NET Framework 2.0 --& NET20.NET Framework 3.5
--& NET35.NET Framework 4.0
--& NET40.NET Framework 4.5
--& NET45.NET Framework 4.5.1 --& NET451.NET Framework 4.5.2 --& NET452.NET Framework 4.6
--& NET46.NET Framework 4.6.1 --& NET461.NET Framework 4.6.2 --& NET462.NET Standard 1.0
--& NETSTANDARD1_0.NET Standard 1.1
--& NETSTANDARD1_1.NET Standard 1.2
--& NETSTANDARD1_2.NET Standard 1.3
--& NETSTANDARD1_3.NET Standard 1.4
--& NETSTANDARD1_4.NET Standard 1.5
--& NETSTANDARD1_5.NET Standard 1.6
--& NETSTANDARD1_6
&关于条件编译符号的应用,如以下代码:
using System.IO;
namespace Baza.NetStandardTester
public class PathHelper
public string BaseDirectory { get; set; }
public PathHelper()
BaseDirectory = AppDomain.CurrentDomain.BaseD
public string GetRootedPath(string path)
string rootedPath = path ?? string.E
if (!Path.IsPathRooted(rootedPath))
if (string.IsNullOrEmpty(BaseDirectory))
throw new ArgumentNullException("请先设置BaseDirectory属性");
rootedPath = bine(BaseDirectory, rootedPath);
string directory = Path.GetDirectoryName(rootedPath);
if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
Directory.CreateDirectory(directory);
return rootedP
代码说明,PathHelper提供GetRootedPath方法用于根据相对路径计算出绝对路径。当运行时为.NET Core时,BaseDirectory属性需要手动设置。当运行时为.NET Framework 4.5时,由构造器对BaseDirectory属性进行赋值。注意System.AppDomain.CurrentDomain.BaseDirectory用于获取托管程序执行路径,类AppDomain只存在于.NET Framework中。
b. .NET Standard是个基于包的框架。当你需要某个API时,如IDataReader,你需要安装mon包。如果是使用.NET Framework,则在命名空间System.Data下可以找到IDataReader而无需按照包。借助工具,你可以快速定位某个API在哪个包中。
c.&基于.NET Core的项目,包版本号和其他元数据,都存储在*.csproj中,不会使用AssemblyInfo.cs文件,即移植时,这个文件可以删除。但是.NET Framework项目还是会继续使用该文件。
4. 同一解决方案,类库间的引用策略。
在引用类库时,要注意目标框架的兼容问题。如,“类库(.Net Standard)”项目,能够被.NET Core App、.NET Framework和其他.NET Standard项目引用。这个是因为.NET Core App和.NET Framework都支持相应版本的。下表显示了支持 .NET 标准库的整套 .NET 运行时。
平台名称Alias&&&&&&&&
.NET Standard
netstandard
netcoreapp
.NET Framework
Mono/Xamarin 平台
通用 Windows 平台
Windows Phone
Windows Phone Silverlight
注意,如果项目是面向多目标框架的,那么引用类库时,被引用类库也要支持面向多目标框架。
5. 单元测试
如果是使用.NET Framework类库项目来存放单元测试代码,那么可能会遇到一点问题。在VS2017 RC中,测试资源管理器无法识别出这些测试单元。通过新建“单元测试项目(.NET Framework)”,将生成的同名*.csproj覆盖原来的项目文件,测试管理器即可识别出来。
5. MSBuild自动编译新的解决方案
Windows下,按Release配置对整个解决方案编译。
"c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe" XXX.sln /p:Configuration=RPlatform="Any CPU"
会在相关类库根目录下\bin\Release目录中,生成net46和netstandard1.6两个目录。
6. 使用dotnet-nuget-push发布包
使用vs2017打包时,只需右击要打包的项目,选择“打包”,即可在.\bin\Debug或.\bin\Release下生成XXX.0[.0].0.nupkg文件,然后将这个文件.nupkg上传至nuget.org中。通过调用dotnet-nuget-push可以自动化这个发布过程,因此这种方式会更加方便。
dotnet nuget push XXX.0[.0].0.nupkg -k 0-4004-bfdf-c4f3e8ef9b3a -s http://customsource/
k:服务器的 API 密钥&s:服务器 URL,如发布到nuget.org,则可以这样写。
dotnet nuget push XXX.0[.0].0.nupkg -k 0-4004-bfdf-c4f3e8ef9b3a -s https://www.nuget.org/api/v2/package
通常在windows下,会将dotnet-nuget-push写在批处理文件中来完成基本类库的部署工作。
通过此方案迁移后,最终保留新的解决方案和项目文件,旧的解决方案和项目文件在移植的过程中被删除。之后将按照新的解决方案来跨平台开发。基本类库的移植工作就介绍到这里。源代码的移植将是个挑战。譬如部分源码所引用的API在.NET Core框架下不存在时如何处理?另外,基础服务和Web Mvc项目的移植,因为要部署到linux中。也将会遇到各种问题。
阅读(...) 评论()

我要回帖

更多关于 asp.net core 版本 的文章

 

随机推荐