最近用起了VS Code,只是想單純地做一些C#程式範例(Snippet),起初照了美女Demo
(她真的很甜)安裝設定,簡要如下:
- 安裝VS Code(只是一個Open Architecture文字編輯器
- 安裝.NET Core(就是.NET Framework 核心肌群
- 在VS Code下安裝種種必須Plugin
- 下指令初始化專案資料結構
- $dotnet new
- 開寫C#
可是呢,當我嘗試想用一些命名空間組件時就開始鬼打牆,好比說System.Collections.Hashtable,明明已經在最前面寫Using System.Collections
可VS Code不會讓你Build過,原因是 xxx Type or name could not be found
原因很簡單,你沒替專案加入參考
如同在Visual Studio下,要引用其他組件除了要在程式碼最開頭帶入Namespace(Using xxxxx),也必須在專案下加入參考(歐~想起來了)
以下紀錄一下如何替VS Code C# Project加入參考
首先打開下面的 終端機(Terminal)以以下指令下載Package,好像是可以想成下載函式庫
#dotnet add package <AssemblyName>
為什麼是System.Collections.NonGeneric?參考的Assembly(.dll/動態函式庫)怎麼查詢?
可看API Reference,裡面的Assembly就是組件名稱,以Hashtable為例,必須要加入System.Collections.NonGeneric,所以下
#dotnet add package System.Collections.NonGeneric
系統會跑出一些訊息表示正在Download,最終會處理完成,如果來了一些Error,比較大可能性是"打錯字",好比System.Collections打成System.Collection(少一個s)
下完以後,再下
#dotnet restore
會自動幫你在.csproj內引入dependencies
你的.csproj會多出dependencies片段:
<project sdk="Microsoft.NET.Sdk"> <propertygroup> <outputtype>Exe</outputtype> <targetframework>netcoreapp1.1</targetframework> </propertygroup> <itemgroup> <packagereference include="System.Collections" version="4.3.0"> <packagereference include="System.Collections.NonGeneric" version="4.3.0"> <packagereference include="System.Runtime.Extensions" version="4.3.0"> <packagereference include="System.Xml.XmlSerializer" version="4.3.0"> </packagereference></packagereference></packagereference></packagereference></itemgroup> </project>
這些是原先新專案結構初始化後所沒有的片段
加入組件到此就沒問題了
咦,若是要加入其他參考專案呢?
可以參考這個指令,dot add reference
後記:網路上會查到很多 手動改project.json以加入dependencies的建議,看起來是比較過去的作法,目前版本的.NET Core SDK似乎要嘗試以.csproj做統整(與Visual Studio一致),捨棄project.json作為專案結構的描述,也許是如此一來專案比較好在VS Studio與VS Code兩個平台上操作而不會有轉換的困擾
感恩菩薩 因為您的這篇, 初接觸VSCode的末學才知道怎麼像VS一樣加入參考.感恩感恩 南無阿彌陀佛
回覆刪除很幸運能幫助到您!
回覆刪除人之善忘,莫過如是。沒想到2年前就來過了,今天為了解決Visual Studio Code加入參考的問題(要用剪貼簿功能,詳末註),又找來了。驚見自己就在上座!還有宅哥菩薩親切的答覆,慚愧、愧悚的是自己這兩年來又回到了原點?今生2年如是,何況前世無量劫耶?敢說沒有前世今生,只因什麼都不記得了??!先讓自己能毋忘乎今生再說唄。感恩感恩 讚歎讚歎 宅哥茂菩薩 南無阿彌陀佛
回覆刪除ps.
using System.Windows.Forms;
命名空間 'System.Windows' 中沒有類型或命名空間名稱 'Forms' (是否遺漏了組件參考?) [g]csharp(CS0234)
守真兄言過其實了!感恩VSCode這些年來沒有重大改變所以這些雕蟲小技還能適用,很感謝能幫助到您
回覆刪除