澳门新葡亰平台官网.NET Core 1.0 RC2 历险之旅

by admin on 2020年1月15日

就是以此该死的图层,像打不跑的苍蝇

小说背景:对于.NET Core我们应该并不面生, 从它被
宣布
到近来曾经有1-2年的大运了,其非常重大的三个本子1.0 RC2 也就要揭橥。.Net
Core从多个叁个的测量检验版到现行反革命的RC2,经历了大多个分寸的生成。特别是在RC1到RC2的更新之中,.NET
Core命令行工具(dotnet cli)从 dnx 变为 dotnet,并且废除了 DNVM 和
DNU,使得 .NET Core
的开辟变得愈加简易,其辅车相依工具链也基本成型。尽管互连网关于.NET
Core的示范项目不在少数,而且微软官方也提供了广大示范项目,但好些个针对的是.NET
Core的不及版本,因而不菲演示项目并非能超级轻便的运行起来。所以笔者主宰写豆蔻年华篇针对RC2以此版本的.NET
Core入门小说并提供部分能直接运维的演示项目。

1、.NET是什么?         .Net全称.NET Framework是二个开垦和平运动行条件,
        该攻略是微软的大器晚成项全新创新意识,
        它将使得“网络行业进入一个更提高的级差”,
        .NET不是后生可畏种编制程序语言. 轻易说正是意气风发组类库框架,
        .NET开辟帮衬C#、VB.NET、J#、Jsript和Managed C++等。
        C#是.NET Framework框架补助的风华正茂种新秀开辟语言,
        可用以支付ASP.NET网址, Windows
程序,调节台程序,以致于手提式有线电话机软件,
2、ASP.NET、.NET和C#的涉嫌是什么的?
        .NET 分成七个方面:
        (1)WinForm
        (2)WebForm
        ASP.NET正是归属WebForm,也正是平常说的B/S方式的成本。
        而WinForm就是归于C/S情势。
        .NET有相当多样语言组成,比如C#、 VB.NET、J#、Jsript、Managed
C++
        不过都以运转在.NET FrameWork Run Time底下的。
        Asp.NET 可以用C#或VB.NET来开发。
        编译后产生CL翼虎,通过服务器的IIS+.NET FrameWork再一次编写翻译来运行。
        C#是支付语言.
        简单的讲,ASP.NET是.NET Framework情状下的动态网页编制程序本事,
        .NET Framework是.NET的底蕴框架,
        Visual Studio.NET是用以开荒软件的一个合龙遭逢(IDE卡塔尔国。
3、.NET开采是用什么语言?
        .NET声称支持市情上20三种语言,但方今
        只有微软官方公布的C#,VB.NET,J#, Jsript和Managed C++
4、为何大多数用C#言语开荒.NET?         C#是Microsoft公司设计的意气风发种编制程序语言,
        C#(读做‘Csharp’卡塔尔(قطر‎。它遵照C/C++,是面向对象的.
        未有指针,有垃圾回收机制,会活动释放内部存储器空间。
        学习C#并不必需有C语言的底工,不过,假若你学过C语言,
        那会一本万利的,因为他们中间有许多语法是相仿的。
        C#支撑的基本项目和C++很相同,包括int, long,
        float, double, char, string, arrays, structs和 classes等。
5、ASP.NET情形的安装
        (1State of Qatar、其实今后貌似的微型机都得以安装,至于操作系统最近
        .NET辅助的阳台有Windows,至于Linux和Unix的帮助正在开拓中.
        Microsoft Windows 2000windows xp sp3windows 2001的操作系统
       
(2卡塔尔国、运转环境下载,因为是向下包容,所以能够下载最新的Framework框架
        .NET Framwork 2.0合法下载地址:
        .NET Framework 3.5下载地址:

        .NET Framework 4.0下载地址:

        (3卡塔尔(قطر‎、安装进程
        首要推荐设置MDAC,再设置SDK,SDK的安装时间比较长要耐性等待。
        (4)、试运行
       
安装完毕后,试着运转叁个精练的ASP.NET编写的小程序,以便确定安装是不是成功。
6、Bin文件夹下的DLL能够做什么?
        (1卡塔尔(قطر‎它是自动生成的,不用自个儿充裕。
       
(2卡塔尔(قطر‎成效:bin文件夹中包含项目中所用到的富有援用的类库,扶植服务器等剧情
        DLL的齐全部都是Dynamic Link Library, 中文叫做“动态链接文件”。
7、.NET首要的亮点有哪些?
       
.NET的关键优点有跨语言,跨平台,安全,以至对开放互连网标准和切磋的补助.
        .NET支持各个语言的互操作,即在风度翩翩种语言下开荒的零器件,
        可在另大器晚成零构件下通过面向对象的世袭而得以重用.
        .NET通过将各语言先编写翻译成人中学间语言(IL卡塔尔,
        然后再进行时用即时(Just In
TimeState of Qatar编写翻译器将之编写翻译开支地平台代码来完毕异构平台下对象的互操作,
        .NET通过国有语言运营库CLLAND(Common Language
RuntimeState of Qatar来达成财富对象,类型的安全.
       
.NET通过对HTTP,XML等Internet标准的支撑提供在异构网络遭逢下获得远程服务,
        连接远程设备,人机联作远程应用的编程分界面
8、ASP.NET和ASP的区别?
        ASP.NET和ASP的最大分别在于编制程序思维的转移以致效率的加强。
        ASP使用VB/JS这样的弱类型、面向构造的脚本语言混合html来编程,
        而非面向对象,那就明摆着爆发以下几个难题:
        1、代码逻辑混乱,难于管理。
        2、代码的可重用性差:由于是面向布局的编制程序方式,并且混合html,
          所以或许页面原型修改一点,整个程序都亟待修正,代码重用性差。
        3、弱类型产生地下的失误也许。
        以上是ASP语言本人的根基差,在效果与利益方面ASP相近存在难点:
        第一是意义太弱,一些平底操作只好通过组件来变成
        第二远远不足完备的纠错/调节和测量试验作用
       
ASP.NET理论上能够动用其余编制程序语言蕴含C#,VB.NET、JS、、J#、Managed
C++等等,
        最合适的编制程序语言依旧MS为.NET Frmaework专门徒产的C#
        优点如下:
        (1卡塔尔(قطر‎是面向对象的编制程序语言,轻便易学。
       
(2State of Qatar具备面向对象编制程序语言的方方面面性格,比方封装性、世襲性、多态性等等,
       
封装性使得代码逻辑清晰,何况使用到ASP.NET上就能够使专门的学问逻辑和Html页面分离;
        世襲性和多态性使得代码的可重用性大大提升
        (3)C#还提供了周到的调整/纠错种类。
9、做项目时数据库类型的选项?
        当前风行的数据库有:Sql server,MySql,Oracle,DB2。
        VS项目中山高校多是筛选以下八种:
        Sql二〇〇一简便实用,成效完全够学习时使用,可经过命令行神速展开;
       
Sql2007功用完善,但安装麻烦,体积大,刚展开数据库的时候相当慢,运转之后就快了广大;
       
Sql二零零六新出的数据库,作用自然比前双方强盛,建议使用Sql二〇〇六的客户晋级到Sql二〇〇九;
        ACCESS体量小、计划方便(不用运维服务等卡塔尔使用方便简单.
10、ASP.NET中偶然使用的控件有怎么着?
       
Label控件用来凸显文本的控件。Label控件无法收到鼠标或是键盘输入。
        TextBox控件来突显和更新义务数据,客户输入内容。
        Button开关控件当客户单击也许点击多少个开关时,即会触发Click事件
       
ListBox和ComboBox控件外观分歧,但效能极为平日,允许顾客打开抉择,不容许输入文本。
11、.net开垦工具都有怎么样?
        今后主流是Visual Studio
2006/二零零六,可是洋洋小企依旧根深蒂固使用vs二〇〇二,
        可是如今vs二零一零也挂牌了。
        VS提供了下列多少个版本:规范版、职业版、Tools for Office 和 Team
System 版。
        还有C# builder只使用于大型公司支付,
        协理部分微软的vs.net都不协助的商家级功用。
        还会有风流罗曼蒂克款免费的开荒工具web
matrix,那款自动感知技能弱到差不离未有,
        切合开垦页面和代码不分开的这种页面,能够进步独立写代码的档期的顺序。
       
不过他带有.net类库浏览器,以至几个数据库开拓的控件,也算是稍稍特点。
        入门初读书人VS.NET会比较轻便上手,
        当然,还应该有正是金牌只用记事本咯!
12、为啥.NET程序第壹遍运维很慢?       
aspx页面在运作时,第三次访谈时要拓宽编写翻译。
        当你再一次运维时,由于缓存机制,速度就能平常了。
13、C#的命名标准
        主要有Pascal和Camel两种
        Pascal:单词的首字母大写,如ProductType;
       
Camel:第二个单词的首字母小写,其他单词的首字母大写,如productType卡塔尔国
          以下是大器晚成对常用的C#分子及其推荐命名方式:
          类class:Pascal
          枚举类型enum:帕斯Carl记住,是以帕斯Carl命名,切勿包涵Enum
         
委托delegate:帕斯Carl以帕斯Carl命名,不以任何特殊字符串差别于类名、函数名
          接口interface:帕斯Carl注:总是以”I”前缀早先,后接Pascal命名
          方法function: Pascal               
          命名空间namespace: 帕斯Carl譬如:usingExcelQuicker.Framework
          属性:Pascal
          参数:Camel 首字母小写               
          常量const: Camel 字母全体大写
          局地变量:Camel 证明变量是以str以前
          数据成员:Camel
以m先导+Pascal命名准则,如mProductType(m意味member)
14、如何判断二个顺序是或不是开源恐怕是有源文件?
        都有对应的.CS文或VB文件
        有等级次序文件和缓慢解决方案文件
        BIN文件下有所的dll文件恐怕援引的机件有相应的源码

QQ截图20190619164332.png (上传于2019-06-22
20:40:20)
澳门新葡亰平台官网 1

下载安装 .NET Core SDK

从 dotnet cli github项目主页找到最新版的.Net Core SDK下载:

比如说 Mac OS X的新型版的.NET Core SDK的下载地址为:

设置前请确认当前系统是或不是业已安装了老版本的.NET Core,
倘诺已经设置,请先卸载。

如在Mac OS X晚春安装的话,请运转如下命令删除:

sudo rm -rf /usr/local/share/dotnet

在Mac OS X上安装早前请先保险 openssl 已经被设置了:

brew install openssl

本身在上篇博客狠狠的嘲弄了这几个设计
https://blog.bccn.net/静夜思/66713
,不解决掉这些标题整天自相惊忧。

开采工具 Visual Studio Code 及其 C# 插件安装

如不考虑使用VSCode举办支付来讲,请忽视此部分。小编不明确最新版本的 Visual
Studio 二〇一四 Update 2 是或不是对.NET Core 1.0 RC2有很好的支撑。

  1. 从官方网站下载安装 VSCode

  2. 安装VSCode C#插件

    由于援助 RC2 的 C# 插件 v1.0 还未有正式披露到 VS Code extension
    货仓里, 因而你只可以手动从github下载并设置:

    Mac OS X 下通过 VSCode 张开下载下来的文件就能够。

    等到 VS Code C# 插件 v1.0
    版本正式发表了,你就可以通过VSCode的指令窗口来设置 C#
    扶植了。详细操作如下:

    运作VSCode, 然后接纳快速键 ⌘ + P
    运维急忙张开命令窗口,然后输入如下命令安装C#恢宏。最新版的csharp扩展已协助RC2 的.NET程序的调节和测验。

    ext install csharp
    

老天爷有眼,前几天让笔者搜到多个10年前的帖子

10年前就有人受那几个麻烦(然则官僚化的微软始终听不到客户的响动),而且开荒了两个扩展,当然这些扩大以往曾经不可能用了。辛亏给了自家一个启示。

使用.NET CLI (dotnet卡塔尔(قطر‎ 创制,编写翻译和运行项目

  1. 创办项目

首先在决定台/Terminal下步入你要创立项目标目录,然后运维如下命令:

    dotnet new

dotnet cli
成立新类型的时候支持项目体系参数-t,但眼前只扶助Console参数。:(

运维之后会变动多少个公文

    project.json    -   类似于.NET Framework里的项目文件
    Program.cs      -   程序启动入口

运用restore命令下载重视

    dotnet restore

如现身网络错误形成restore失利的图景请重试两遍,貌似这种情状相当少。

如觉察左近下边包车型地铁Warning也请不要惊惶,那是出于CLI的版本号与下载下来的.NET
Core类库的版本号不平等导致的,这种景色不会潜移暗化编写翻译和周转。

    warn : Dependency specified was Microsoft.NETCore.App (>= 1.0.0-rc2-3002464) but ended up with Microsoft.NETCore.App 1.0.0-rc2-3002468.
  1. 编写翻译项目

在调整台或Terminal打开项目所在目录,运行如下命令编译:

    dotnet build

如现身如下相同编写翻译错误:

   error NU1002: The dependency Microsoft.CodeAnalysis.Common 1.2.0-beta1-20160202-02 does not support framework .NETCoreApp,Version=v1.0
   error NU1002: The dependency Microsoft.CodeAnalysis.CSharp 1.2.0-beta1-20160202-02 does not support framework .NETCoreApp,Version=v1.0

并发那么些题指标恐怕原因是NuGet上通过版本号相配到的信赖包并不可能使用,你需求做如下操作之后再重复restore一下。

a. 在品种根目录新增Gavin件 NuGet.config, 并写入以下内容:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <packageSources>
            <!--To inherit the global NuGet package sources remove the <clear/>line below -->
            <clear/>
            <add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json"/>
            <add key="api.nuget.org" value="https://api.nuget.org/v3/index.json"/>
        </packageSources>
    </configuration>

b. 张开 project.json 文件将 dependencies 节点中的 Microsoft.NETCore.App
的版本好改正为 1.0.0-rc2-*:

    "dependencies": {
        "Microsoft.NETCore.App": {
            "type": "platform",
            "version": "1.0.0-rc2-*"
        }
    }

c. 然后再另行运转 dotnet restore 之后编写翻译

  1. 运作项目

    在调节台或Terminal张开项目所在目录,运维如下命令运维:

    dotnet run
    

    如遇如下错误,

    Expected to load libhostpolicy.dylib from [/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0-rc2-3002468]
    This may be because the targeted framework ["Microsoft.NETCore.App": "1.0.0-rc2-3002468"] was not found.
    

    也休想紧张,到目录 bin/Debug/netcoreapp1.0中 找到文件
    *.runtimeconfig.json, 将此中 runtime 版本号改革为与本机 CLI
    版本号风度翩翩致就能够。

    {
        "runtimeOptions": {
            "framework": {
                "name": "Microsoft.NETCore.App",
                "version": "1.0.0-rc2-3002485"
            }
        }
    }
    

    如本机 dotnet –version 命令再次来到值为 “1.0.0-rc2-002485”,则应runtime
    config中的版本号应替换为“1.0.0-rc2-3002485”。

    接下来再品尝运转 dotnet run

  2. 调弄收拾项目 (Visual Studio Code卡塔尔(قطر‎

    动用 VSCode 张开项目所在文书夹之后,VSCode
    会问您是或不是丰裕启用处目调节和测量检验相关的文件,你选OK之后目录下会新扩大文件夹“.vscode”,此中会蕴藏多个公文:

    launch.json
    tasks.json
    

    当你发觉不能够调节和测量检验失败的时候,你可以到 launch.json
    文件,检查运行所针对的文件是不是准确:

    {
        "name": ".NET Core Launch (console)",
        ...
        "program": "${workspaceRoot}/bin/Debug/netcoreapp1.0/netcore.dll",
        ...
    }
    

于是乎我早先搜vs的恢宏,联机搜“tooltips”关键字的时候搜到一个叫“Tame Visual Studio Editor
Tooltips
”的扩张,看上去疑似关于编辑器Tooltips的,细心看了刹那间介绍,果然是解决这么些主题素材的。点击download安装就可以。扩展详细介绍:

使用 .NET Core 进行 ASP.NET MVC 开发

就算如此 dotnet cli 并从未提供第一手开立
web/mvc项目标选项,不过我们如故得以手动来创建 mvc 项目标。

  1. 首先是翻新 project.json 来扶助 mvc:

    {
        "version": "1.0.0-*",
        "content": [
            "wwwroot",
            "Views"
        ],
        "compilationOptions": {
            "preserveCompilationContext": true,
            "emitEntryPoint": true,
            "debugType": "portable"
        },
        "dependencies": {
            "Microsoft.AspNetCore.Diagnostics": "1.0.0-*",
            "Microsoft.AspNetCore.Mvc": "1.0.0-*",
            "Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0-*",
            "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-*",
            "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-*",
            "Microsoft.AspNetCore.StaticFiles": "1.0.0-*",
            "Microsoft.Extensions.Logging.Console": "1.0.0-*",
            "Microsoft.NETCore.App": {
                "type": "platform",
                "version": "1.0.0-rc2-*"
            }
        },
        "frameworks": {
            "netcoreapp1.0": {
            "imports": [
                "portable-net45+wp80+win8+wpa81+dnxcore50"
            ]
            }
        },
        "tools": {
            "Microsoft.AspNetCore.Server.IISIntegration.Tools": {
            "version": "1.0.0-*",
            "imports": "portable-net45+wp80+win8+wpa81+dnxcore50"
            }
        },
        "scripts": {
            "postpublish": "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"
        }
    }
    
  2. 在NuGet.config 文件中加进 ASP.NET
    的包的下载地址,如此文件不设有请先增添:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <packageSources>
            <!--To inherit the global NuGet package sources remove the <clear/> line below -->
            <clear />
            <add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
            <add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" />
            <add key="AspNetCI" value="https://www.myget.org/F/aspnetcirelease/api/v3/index.json" />
        </packageSources>
    </configuration>
    
  3. 扩充 Startup.cs 文件 然后在 Program.cs 增添运营代码:

    Startup.cs

    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Logging;
    
    namespace HelloMvc
    {
        public class Startup
        {
            public void ConfigureServices(IServiceCollection services)
            {
                // 注册MVC相关服务到ASP.NET Core的反转控制器
                services.AddMvc();
            }
    
            public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
            {
                loggerFactory.AddConsole(LogLevel.Debug);
    
                //启用静态文件支持
                app.UseStaticFiles();
    
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
    
                // 启用 Mvc 并定义默认的路由
                app.UseMvc(routes =>
                {
                    routes.MapRoute(
                        name: "default",
                        template: "{controller=Home}/{action=Index}/{id?}");
                });
            }
        }
    }
    

    Program.cs

    using System;
    using System.IO;
    using Microsoft.AspNetCore.Hosting;
    
    namespace HelloMvc
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                var host = new WebHostBuilder()
                            .UseKestrel()
                            .UseContentRoot(Directory.GetCurrentDirectory())
                            .UseDefaultHostingConfiguration(args)
                            .UseIISIntegration()
                            .UseStartup<Startup>()
                            .Build();
    
                host.Run();
            }
        }
    }
    
  4. MVC 其它

    ASP.NET Core中 MVC 具体的开荒方法,请参见官方文书档案

    来学学应用,作者在这里间就不再累述了。
    完全示例可参照我在github上的演示项目:

    MVC项目也可透过 dotnet run 命令运维,还能利用VSCode进行调理。

唯独笔者乐意的依然太早了。这么些扩张只辅助了C#语言,VB.NET根本比不上作者的法眼。万幸此个增加是开源的,顺着扩充的介绍页面找到了她的github页面

(可怜近期停止唯有2个star,1个fork,在那之中三个star是本身点的,唯意气风发的fork也是自己拉了个分支,可以预知微软的本领在开源社区是怎么着的冷淡),通过翻阅
TameVisualStudioEditorToolTips/TameQuickInfo.cs
的代码开掘未有对vb.net的协理,那是15、16、17行的代码:

在 .NET Core 中使用 EntityFramework + Sqlite

.NET Core 中的 EntityFramework 也在 RC2 也可能有相当的大的生成。包的名字从
“EntityFramework.” 变化为 “Microsoft.EntityFrameworkCore.“。
如需使用Sqlite的话,project.json的包依赖应为:

"dependencies": {
    ...
    ...
    "Microsoft.EntityFrameworkCore": "1.0.0-*",
    "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0-*",
    "Microsoft.NETCore.App": {
        "type": "platform",
        "version": "1.0.0-rc2-*"
    }
}

别的,frameworks 节点对 netcoreapp1.0 也需扩张新的imports
(portable-net45+win8+wp8+wpa81 和 portable-net45+win8+wp8卡塔尔国:

"frameworks": {
    "netcoreapp1.0": {
        "imports": [
            "portable-net45+wp80+win8+wpa81+dnxcore50",
            "portable-net45+win8+wp8+wpa81",
            "portable-net45+win8+wp8"
        ]
    }
}

接下来在Startup.cs中注册EF相关的劳务和DbContext:

public void ConfigureServices(IServiceCollection services)
{
    services.AddEntityFramework()
            .AddEntityFrameworkSqlite()
            .AddDbContext<WebsiteDbContext>(
                options => options.UseSqlite("Data Source=./mvcefsample.sqlite")); //设置链接字符串

    services.AddMvc();
}

再到Configure里面开头化数据库可能启用DbMigration:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        ...

        using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
        {
            var db = serviceScope.ServiceProvider.GetService<WebsiteDbContext>();

            // do db migrate automatically
            // db.Database.Migrate();

            if (db.Database.EnsureCreated())
            {
                for (int i = 0; i < 10; i++)
                {
                    var article = new Article {
                        Title = string.Format("Article {0}",  i + 1),
                        Content = string.Format("Article {0} content blabla blabla",  i + 1),
                        CreatedTime = DateTime.Now,
                        UpdatedTime = DateTime.Now
                    };

                    db.Articles.Add(article);
                }
                db.SaveChanges();
            }
        }
    }

意气风发体化示例可参谋作者在github上的演示项目:

    [ContentType("CSharp")]
    [ContentType("XAML")]
    [ContentType("XML")]

在 ASP.NET MVC Core 中使用 ASP.NET Identity

  1. ASP.NET 中身份验证是免不了的业务,首先第一步在 project.json
    中加多包依赖:

    "dependencies": {
        ...
        ...
        "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0-*",
        ...
        "Microsoft.EntityFrameworkCore": "1.0.0-*",
        "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0-*",
        "Microsoft.NETCore.App": {
            "type": "platform",
            "version": "1.0.0-rc2-*"
        }
    }
    
  2. 得以达成带有 Identity 扶助的 DbContext:

    using Microsoft.EntityFrameworkCore;
    using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
    
    namespace MvcIdentitySample
    {
        public class ApplicationUser : IdentityUser
        {
    
        }
    
        public class WebsiteDbContext : IdentityDbContext<ApplicationUser>
        {
            public WebsiteDbContext(DbContextOptions<WebsiteDbContext> options)
                : base(options)
            {
    
            }
    
            //public DbSet<Article> Articles { get; set; }
        }
    }
    
  3. 下一场在 Startup 中的 ConfigureSerivces 方法中登记服务:

    public void ConfigureServices(IServiceCollection services)
    {
        // register services about EF
        services.AddEntityFramework()
                .AddEntityFrameworkSqlite()
                .AddDbContext<WebsiteDbContext>(
                    options => options.UseSqlite("Data Source=./mvcidentitysample.sqlite"));
    
        // register services about ASP.NET Identity
        services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddEntityFrameworkStores<WebsiteDbContext>()
            .AddDefaultTokenProviders();
    
        services.AddMvc();
    }
    
  4. 再到 Startup 中的 Configure 方法中启用 Identity:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        ...
    
        // the authentication must be configured before mvc
        app.UseIdentity();
    
        // To configure external authentication please see http://go.microsoft.com/fwlink/?LinkID=532715
        /*
        app.UseFacebookAuthentication(new FacebookOptions
        {
            AppId = "901611409868059",
            AppSecret = "4aa3c530297b1dcebc8860334b39668b"
        });
        */
    
        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    }
    

注意 app.UseIdentity(卡塔尔(قطر‎ 那句必需置于启用 MVC 早前,不然 Identity
无法生效,那一个主题材料折腾了自家多少个钟头。:(

  1. 出于 ASP.NET MVC 6 和 最新的 ASP.NET Identity
    的调换,其使用方法与老版本的模板代码略有区别。

    a.
    页面尾部登入状态某个页面(/Views/Shared/_LoginPartial.cshtml),由于
    taghelper 的引入和
    模版引擎的生成,这些页面包车型地铁代码看起来会和原先有醒指标例外:

    @using Microsoft.AspNetCore.Identity
    @using MvcIdentitySample
    @using MvcIdentitySample.Models
    @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
    @inject SignInManager<ApplicationUser> SignInManager
    @inject UserManager<ApplicationUser> UserManager
    
    @if (SignInManager.IsSignedIn(User))
    {
        <form asp-controller="Account" asp-action="LogOff" method="post" id="logoutForm" class="navbar-right">
            <ul class="nav navbar-nav navbar-right">
                <li>
                    <a asp-controller="Manage" asp-action="Index" title="Manage">Hello @UserManager.GetUserName(User)!</a>
                </li>
                <li>
                    <button type="submit" class="btn btn-link navbar-btn navbar-link">Log off</button>
                </li>
            </ul>
        </form>
    }
    else
    {
        <ul class="nav navbar-nav navbar-right">
            <li><a asp-controller="Account" asp-action="Register">Register</a></li>
            <li><a asp-controller="Account" asp-action="Login">Log in</a></li>
        </ul>
    }
    

    b. 新增 _ViewImports.cshtml (/Views/_ViewImports.cshtml卡塔尔(قطر‎的运用制止了再度在四个view里面扩充相似的using和任何定义:

    @using Microsoft.AspNetCore.Identity
    @using MvcIdentitySample
    @using MvcIdentitySample.Models
    @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
    

    诸如此比就无须在刚刚的_LoginPartial.cshtml页面里增加同样的代码了。

接下来克隆那几个类型,加上Basic、HTML、CSS、Jscript的支撑

总结

世家通过以上介绍和示范应该能够通晓到,当前使用.NET Core
来张开简易的利用开拓是有效的,dot cli(dotnet卡塔尔那些工具已经比上个版本(RC1State of Qatar的工具轻巧方便了成都百货上千,何况统大器晚成的Web开荒和Console开垦,CLI工具本身今后应该不会有太大的转换。因为.NET
Core 1.0
RC2还在支付测量检验阶段,有的包可能还未颁发到NuGet上,因而而引致的找不到合适包的情况归于多如牛毛难点之大器晚成,可是倘使在NuGet.config中扩张了特别的Package
Source,那些标题就很好化解了。所以我们假如想要把温馨的品类,集团的类型搬迁到.NET
Core, 未来就足以起来动手了,不用再等届期间不明确的 1.0 release。

除此以外,本文所出示的示范代码限于篇幅与制版,不恐怕到位非常详细,比方代码中所须求的using并未有谈起,还亟需读者来自行增多(VS里ALT+SHIFT+F10,
VSC里面好像只可以手动点惊叹号?卡塔尔国。

并且此文目的在于尝试.NET Core的可用性,由此尚未对如ASP.NET MVC 6和
EF7相关手艺做深刻斟酌,如需领悟请查占卜关技巧文书档案:

  1. ASP.NET MVC
  2. EntityFramework

最后再晋升我们二遍,本文中所涉及的代码的欧洲经济共同体示例项目已停放 github
上,接待大家fork/star/send pr:

namespace TameVisualStudioEditorToolTips {

    using System.ComponentModel.Composition;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Windows.Input;
    using Microsoft.VisualStudio.Language.Intellisense;
    using Microsoft.VisualStudio.Shell;
    using Microsoft.VisualStudio.Text;
    using Microsoft.VisualStudio.Utilities;

    [Export(typeof(IAsyncQuickInfoSourceProvider))]
    [Name("Tame Quick Info")]
    [Order(Before = "Default Quick Info Presenter")]
    [ContentType("CSharp")]
    [ContentType("Basic")]
    [ContentType("XAML")]
    [ContentType("XML")]
    [ContentType("HTML")]
    [ContentType("CSS")]
    [ContentType("JScript")]
    internal class TameQuickInfo : IAsyncQuickInfoSourceProvider {

        public IAsyncQuickInfoSource TryCreateQuickInfoSource(ITextBuffer textBuffer) {
            return textBuffer.Properties.GetOrCreateSingletonProperty(() => new CancelingQuickInfoSource());
        }
    }

    internal class CancelingQuickInfoSource : IAsyncQuickInfoSource {

        public CancelingQuickInfoSource() {
        }

        public void Dispose() {
        }

        public async Task<QuickInfoItem> GetQuickInfoItemAsync(IAsyncQuickInfoSession session, CancellationToken cancellationToken) {
            var isKeyDown = false;
            ThreadHelper.JoinableTaskFactory.Run(async delegate {
                // now on the UI thread
                await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
                isKeyDown = Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift) || Keyboard.IsKeyDown(Key.LeftCtrl)  || Keyboard.IsKeyDown(Key.RightCtrl);
            });

            // back on background thread
            if (!isKeyDown) {
                _ = session.DismissAsync();
            }
            return await System.Threading.Tasks.Task.FromResult<QuickInfoItem>(null);
        }
    }
}

在visual studio里编写翻译,安装,最后马到成功!

上边是自身编写翻译的恢弘,扶持C#、VB.NET代码屏蔽弹出浮层,下载了直接设置就能够:

TameVisualStudioEditorToolTips.vsix

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图