最近.NETCore升级到2.0后开始慢慢捣鼓的多了起来,但遇到了不少坑,所以特来记录下。
第一个坑条件编译符
我们在编写一些方法的时候通常会为Debug模式增加一些输出日志等以便我们检查,也会为Release模式增加或修改一些特定的参数,但今天我在写这些的时候就遇到了这个坑
#if!DEBUG#endif中间的代码不能我怎么更改配置环境始终是灰色,这让我开始怀疑,难道VS2017的.NETCore不支持条件编译符了?
于是新建了个控制台程序测试了以下,但又发现还是起作用了的如下:
这里就可以看到我明明不是Debug环境啊,可是#ifDEBUG的还是正常色,!DEBUG的还是灰色,直接F5运行后发现结果出乎我意外
结果居然是正常的,如何我又怀疑是我vs更新后出问题了,于是我又用.netframework旧格式创建一个了一个项目发现旧的又是好的
第二个坑.NETCoreMVC下的部分文件无法下载
使用.NETCoreMVC创建了一个站点,本来使用的还蛮好的,但后来配备了app于是就直接把apk文件放到网站的wwwroot目录下了,改了个名字就叫app.apk,然后访问:http://127.0.0.1/app.apk返回给我一个404not find
因为搞iis还是比较多,于是马上想到一个是每天添加mime导致,于是去iis站点里面增加,发现以及存在了
瞬间就懵逼了,于是就从到请求筛选里面去找找是不是在那被禁止了但发现也没用,于是又把文件改成app.apk.zip试了下,发现zip是可以下载的
第三个坑.NETCore2.0MVC的试图文件
从2.0开始貌似试图文件被直接打包成了dll文件,不在像传统的mvc一样发布后还是shtml文件,而是被编译成了dll文件命名规则是项目名称.PrecompiledViews.dll
第四个坑.NETCore引用DLL问题
我们以前开发总是把一些常用的某些功能性的单独做成一个类库编译成dll后供项目使用,但这样做好像在.NETCore的项目中行不通
起初我写了一个公共的类库,在解决方案里面又新增了一个类库,去引用公共类库的项目,这样做的时候并没有什么异常,但当我启动另外一个vs创建一个新的解决方案添加项目在去引用公共类库的dll后在vs里面写代码都很正常,代码提示也都有
但是一按F5调试就出来坑了,报未能找到类型或命名空间
解决方案是把公共类库打包生成NuGet包
然后通过管理NuGet包添加引用,但很多情况下一些类库我并不想都放到nuget.org上面,可以把生成的nuget包放置MicrosoftVisualStudioOfflinePackages离线包里面
放到MicrosoftVisualStudioOfflinePackages对应的目录即可。