近年来.NET
Core升级到2.0后开端逐渐捣鼓的多了四起,但蒙受了不少坑,所以特来记录下。

首先个坑  条件编译符

  大家在编辑一些艺术的时候一般会为Debug方式增加一些出口日志等以便我们检查,也会为Release形式扩展或改动部分一定的参数,但前天自家在写这么些的时候就遇上了这几个坑
#if !DEBUG  #json,endif 中间的代码 不可能自己怎么转移配置环境
始终是褐色,那让自身开首猜忌,难道VS 2017 的.NET Core
不帮助标准编译符了? 

于是新建了个控制台程序测试了以下,但又发现依然起成效了的如下:

json 1

此地就可以 看到 我肯定不是Debug环境啊,但是 #if
DEBUG的要么正常色,!DEBUG的要么黄色,直接F5周转后 发现结果大于我想得到

json 2

结果依然是健康的,怎么着自身又疑心是自己vs
更新后出难题了,于是我又用.net framework
旧格式创制一个了一个品类发现旧的又是好的

json 3

其次个坑  .NET Core MVC下的一部分文件不可能下载

   使用.NET Core
MVC创设了一个站点,本来使用的还蛮好的,但后来配备了app 于是就径直把apk
文件放到 网站的wwwroot目录下了,改了个名字就叫app.apk,然后访问:
http://127.0.0.1/app.apk 重回给本人一个404 not find 

json 4

 

因为搞iis 依然比较多,于是立即想到一个是每一日添加
mime导致,于是去iis站点里面增添,发现以及存在了

json 5

转眼就懵逼了,于是就从到请求筛选里面去找找是或不是在那被取缔了
但发现也没用,于是又把公文改成app.apk.zip试了下,发现zip是能够下载的

 

json 6

 

 

 


21号晚上立异,

这几个标题感谢@蜗牛往前走的点拨,所以才记起因为iis只是一个代理了,所以自己捣鼓了一个解决方案,就是在appsettings.json配置内部配备

如下

json 7

在到安装Startup.cs的增加代码

 public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<Dictionary<string,string>>(Configuration.GetSection("Mime"));
            services.AddMvc();
            services.AddDbContext<ApplicationDataContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SqlServerConnection")));
        }

 public void Configure(IApplicationBuilder app, IHostingEnvironment env, IOptions<Dictionary<string, string>> option)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseBrowserLink();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }
            // app.UseStaticFiles()  //使用新的配置文件方式使用
            var provider = new FileExtensionContentTypeProvider();
            foreach(string key in option.Value.Keys)
            {
                provider.Mappings.Add(key, option.Value[key]);
            }
            app.UseStaticFiles(new StaticFileOptions() { ContentTypeProvider = provider });
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }

 

 因为FileExtensionContentTypeProvider默许的构造函数mime基本已经定死了
而。NET core的网站 很多是不行使iis设置的
FileExtensionContentTypeProvider代码地址
我们可以去看看https://github.com/aspnet/StaticFiles/blob/dev/src/Microsoft.AspNetCore.StaticFiles/FileExtensionContentTypeProvider.cs

 

其多个坑  .NET Core  2.0 MVC 的准备文件

      
 从2.0从头貌似试图文件被一直打包成了dll文件,不在像传统的mvc一样发表后或者shtml文件,而是被编译成了dll文件
命名规则是 项目名称.PrecompiledViews.dll

json 8

 

 第七个坑  .NET Core  引用DLL难题

        我们从前开发连接把一些常用的某些功用性的独自做成一个类库
编译成dll 后供项目应用,但这么做好像在.NET Core的花色中行不通

开局我写了一个国有的类库,在缓解方案里面又新增了一个类库,去引用公共类库的品种,那样做的时候并不曾什么分外,但当我起步别的一个vs创立一个新的解决方案添加项目在去引用公共类库的dll后
在vs里面写代码都很正规,代码提示也都有

但是一按F5 调试就出来坑了,报未能找到类型或命名空间

json 9

 

杀鸡取卵方案是把集体类库打包 生成NuGet包

json 10

 

下一场通过管制NuGet包添加引用,但广大情景下
一些类库我并不想都置于nuget.org上边,可以把转变的nuget包放置Microsoft
Visual Studio Offline Packages 离线包里面

json 11

json 12

置于Microsoft Visual Studio Offline Packages对应的目录即可

 

相关文章

网站地图xml地图