Windows 10 釋出後,其實SDK也偷偷地在VS的自定義安裝列表中出現了,今天開發人員中心也更新了下載。正式版的SDK在API結構上和以前預覽的時候是一樣的,只是版本變成10240罷了,所以大家不要問老周有什麼新的API。

API雖然沒變,但VS中的應用程式專案是有了新變化。畢竟以前都是預覽的,而現在是“正規軍”,以前練兵時都用土豆槍,現在都是真刀真槍幹了,故而應用程式專案是有變化的。

以前老周跟大家講的修改專案模板,去掉遙測類庫的方法僅僅是針對預覽版的,現在我們無須這麼做,在新建專案時,你可以在新建對話方塊中選擇是否需要遙測。如下圖。

如果我在建立專案時沒有啟用遙測,而專案已經建立了,後來我又想新增遙測怎麼辦呢。很Easy,只要在專案名稱上右擊滑鼠,選擇“新增Application Insights 遙測...”選單即可。

下面再看應用程式專案的另一個重點——引用。

有人會問,引用有啥好看的,玩.net的人誰不知道。別急,這次的UAP專案的引用方式比較有趣。先看截圖。

有沒有注意到什麼不同了嗎? 首先,肯定少不了Universal Windows這個通用API集合,這個和以前是一樣的,我記得曾經給大家介紹過Win 10 API集合是通過API協定來歸檔的,還記得吧?不記得就算了,不影響你寫程式碼。

除了UWP平臺提供的UAP - API,我們知道還有一個.NET的類庫集,不過大家注意名字,現在不是叫.NET for Windows Store App了,現在叫.NET Core for Universal windows platform。有人要問了,有區別嗎,不是改了個名字而已。當然沒那麼簡單,這個新的.NET Core版本號是5.0,以前是4.5。當然這不是關鍵,關鍵是有.net型別以前不可以用,但現在可以用了。比如這個:System.IO.IsolatedStorage。

當然絕大多數都一樣,但Windows App是強制編譯為原生代碼的,估計這個新的core是出於這個用途吧。反正不影響我們寫程式碼。

但是,我要說的,是讓大家仔細觀察上面的截圖,有沒有發現Microsoft.NETCore.UniversalWindowsPlatform這個引用的圖示比較另類?它的圖示和其他的引用不同。

如果你現在雙擊它,是不能在物件瀏覽器中檢視的。

但你可以在物件瀏覽器中選擇“.NET for Windows Universal”來檢視。

為什麼那個傢伙那麼有個性呢,圖示要與眾不同呢? 你有沒有發現專案裡面有個叫project.json的檔案,是JSON格式的,開啟它之後,你會有驚喜。

{
"dependencies": {
"Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0"
},
"frameworks": {
"uap10.0": {}
},
"runtimes": {
"win10-arm": {},
"win10-arm-aot": {},
"win10-x86": {},
"win10-x86-aot": {},
"win10-x64": {},
"win10-x64-aot": {}
}
}

看到上面內容,你明白為什麼.net for UWP的引用圖示另類了吧。這不是明擺著嗎,這個引用是通過這個JSON檔案來配置的。

再細心看看,你還會發現,這個project.json檔案的生成操作為none,不復制。

意思是說,這傢伙是可有可無的了,於是,我們把這個project.json從專案中排除,注意是排除,不是刪除,不要急著刪,不然你會後悔的。

排除這個JSON檔案後,你再生成一下專案,成功,沒有報錯。

接下來,你到專案所在的資料夾下,把那個project.json檔案刪除(還有一個project.lock.json也刪除),只要放進回收站就可以了,切記!

然後,再重新生成一下專案,這時候,你會發現大禍臨頭了。

由此可以看到,.NET for UWP的引用是通過這個JSON檔案來描述的,但這個檔案不一定要包括中專案中,只要它位於專案的目錄下就可以了。

經過我後續實驗發現:

1、project.json和project.lock.json同時存在時,編譯正常。

2、project.json刪除,project.lock.json存在時,編譯正常。

3、project.json存在,project.lock.json存在時,編譯正常。

4、只要project.json存在即可以成功編譯,會自動生成project.lock.json檔案。

5、如果project.json和project.lock.json都不存在,編譯出錯。並且在專案的引用列表中不見了.NET for UWP。

至於這個project.json的具體作用,還是等官方參考文件完善了才知道。但從上面的測試來看,這個JSON應該是用來描述.net for UWP的引用的。

當然了,我們實際開發中,可以不必理會這個檔案,照舊寫程式碼就OK了。