前言:
之所以要寫這個系列是因為在移植項目到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也說了,要將上面這些新的特性加入到其中,所以還好吧,所以我們的踩坑記,還是蠻重要的,大家說是吧。