顯示具有 .NET Core 標籤的文章。 顯示所有文章
顯示具有 .NET Core 標籤的文章。 顯示所有文章

2018年12月2日 星期日

OpenCVSharp@MACOS 安裝步驟

步驟大致參考此,另外註記心得
https://github.com/shimat/opencvsharp/tree/master

OpenCVSharp只是opencv的C# wrapper,所以本機上必須要有opencv套件+opencvsharp
,需要特別注意版本對應問題,本篇針對opencv4.0.0做紀錄

2017年7月8日 星期六

[VS Code x C#] VS Code加入參考


最近用起了VS Code,只是想單純地做一些C#程式範例(Snippet),起初照了美女Demo
(她真的很甜)安裝設定,簡要如下:


  1. 安裝VS Code(只是一個Open Architecture文字編輯器
  2. 安裝.NET Core(就是.NET Framework 核心肌群
  3. 在VS Code下安裝種種必須Plugin
  4. 下指令初始化專案資料結構
    1. $dotnet new 
  5. 開寫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兩個平台上操作而不會有轉換的困擾