.NET Core爬坑记 1.0 项目文件

前言:

  之所以要写这个系列是因为在移植项目到ASP.NET Core平台的过程中,遇到了一些“新变化”,这些变化有编译方面的、有API方面的,今天要讲的是编译方面的一些问题。我把它们整理后分享出来,以便各位博友不要再遇到这些坑。

  在Dotnet Core RC2版本中,project.json 管理着整个项目,包括编译文件、依赖包管理、版本信息、平台依赖与发布等功能。

关于项目中引用:

比如我们一般看到Project.json中一般会有如下内容:

"dependencies": {
    "Newtonsoft.Json": "8.0.3"
}

这是一段标准的引用一个程序集的配置文件; 但是如果我们想引用的是一个解决方案中的其它项目,那应该如何编写呢?

 "dependencies": {
    "项目名称": {
      "target": "project",
      "type": "build"
    }
  }

这样在编译这个项目的时候,也会将引用的项目一起编译。

编译文件:

buildOptions节点定义了如何编译和编译哪些文件等。

1. compile 节点 : 文件编译,是一个数组,确定一组要编译的文件进行定义, **.cs (默认) 表示 包含子目录下的所有.cs文件,如果要链接共用的代码进行编译的话可以在这个地方设置。 这种方式相当不错,直接可以引用另一个目录下的文件进行编译,非常方便!!!

2. defines 节点 : 编译变量的定义,用于条件编译,如多平台判断。

上段代码吧:

 "buildOptions": {
    "compile": [
      "*.cs",
      "../Mvc/**.cs"
    ]
}

这段代码说明了,我们要编译本项目目录的所有.cs文件和上层Mvc项目目录及子目录的所有.cs文件。

编译宏:

#if NET451

#if NETCOREAPP1_0 

#if NETSTANDARD1_5

以上是三个平台的编译宏,大家一看就懂的。

最后:

其实说了半天以上都不是真的坑,在6月27号的RTM版本中,Project.json将不再存在,取代它的将是.csproj, 没错它又回来了!!!

不过MS也说了,要将上面这些新的特性加入到其中,所以还好吧,所以我们的踩坑记,还是蛮重要的,大家说是吧。

时间: 2024-10-22 19:09:18

.NET Core爬坑记 1.0 项目文件的相关文章

.net Core 踩坑记:全新零框架项目搭建

参考[ASP.NET Core跨平台开发从入门到实战 [张剑桥].pdf]从零搭建.net core项目(名称叫NetNote),又踩了不少坑,趁着有印象记下: 1.选用的是最简单最空的项目,说是WebApplication,实际和控制台一样了,只有最基本的Starup.cs.Program.cs,以及几个json,其它全没有.这种最好,一个个往上搭,看需要什么东西 2.看有些core源码没有再分一层数据层出来,直接在控制器搞定.我还是按习惯把默认的改为NetNote.UI,再建一个类库,叫Ne

redis 从库数据同步失败——爬坑记

早上上班,发现redis的一个slave节点down了一个.对,没错,不是数据不同步那么简单,连redis服务进程都自动退出了. 场景:主从同步模式 master-->slave1 master-->slave2 master-->slave3 info状态: slave1,slave2 都是state=online,offset=5744884846,lag=1正常状态,slave3是state=send_bulk,offset=0,lag=0 1.重启redis操作 日志内容:WAR

单片机爬坑记-05-编译环境(完)

在搞定了 VSCode + Makefile 玩弄 TivaWare C 库的环境之后,我们很容易想到,是否能以同样的方式玩弄其他单片机库.基本套路是,确保系统环境能够直接通过命令行调用arm-none-eabi-gcc进行编译,然后通过Makefile来组织并完成编译. 目标对象:STM32全系列(ST).NuTiny-SDK-M051(Nuvoton).STC89C51(STC). 1.STM32全系列(ST) ST官方出了一款极为方便且跨平台的工具叫做STM32CubeMX,这很好,不需要

.net core 填坑记之—格式转换问题

最近在将项目从.net 迁移到.net core环境中,迁移完成后,发布于Windows平台上进行测试,所有功能均能正常运行. 为了项目能够在正式环境也能正常运行,提前进行Linux环境部署(Centos7)预发布,就在预发布后进行代码的基本测试后, 发现日志中出现了string转datetime错误,按道理说相同的代码,相同的测试用例, 不应该出现不同的结果!!!???~ ~想到Linux和Windows还是有些差异性,会不会是运行环境的问题,经过调试发现,在linux中将datetime直接

Git爬坑记

Git记录 使用git 也有一段时间了, git的入门级了解也就不再多说, 但平常使用中, 仍然会遇到很多问题, 在此记录一二. 在查资料的过程中, 发现了两个比较好的资料: 特别是第二个, 相当详细的 Git教程, 如果看完的话, 相信对 Git的使用理解已经基本不是问题了. 常用Git命令清单 Git 分支 - 何谓分支 Git基础命令 git config --global user.name "myname" git config --global user.email &qu

微信小程序爬坑记

1.this.setData修改数组里的值1).data: { hide:[true,true] },this.setData({ 'hide[0]': false});2).var str = "hide[" + id + "]"//重点在这里,组合出一个字符串 var 是在function里的this.setData({ [str]: false//用中括号把str括起来即可 })3)key-value类型data: { main_view_bgcolor: &

单片机爬坑记-03-编译环境

Arduino IDE是最难用又最好用的单片机IDE,没有之一!难用之处在于没有自动补全(这一点最是难受,但又最是无处说理),库文档也常常不全,时不时就要开Source Insight看看库文件的源代码,很是麻烦:好用之处则在于库管理和开发板管理极为方便,调用某个库的时候需要#include的头文件也是一键完成,尤其适用于新建工程(先把所有头文件#include上)和库管理(开发板相关文件一般不怎么变动). 寻求一个"能自动补全.方便管理项目.省心省事不折腾.能跨平台作业"的IDE是自

webpack 爬坑记

1. css modules 里中划线命名的类名 在 css 中 类似 '.progress-bar' 这样带中划线的类名是合法的. 但是在 JS 里, 会把中划线当成减号, css modules 可能无法按我们的意图解析类名. 编译出来的东西放浏览器里运行,会在控制台里看到变量未声明的错误. 解决方法: 1. 假如我们是按这样引入样式 import styles from '../style/style.css'; 那么我们再引入里面的 '.progress-bar' 时得 {styles[

爬坑记:内联元素的padding-top属性

midifan.com/moduleuser-index-449513.htmmidifan.com/moduleuser-index-449492.htmmidifan.com/moduleuser-index-449411.htmmidifan.com/moduleuser-index-449495.htmmidifan.com/moduleuser-index-449440.htmmidifan.com/moduleuser-index-436149.htmmidifan.com/modu