Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~
在本系列文因為工作上的產品應用需求,進而探索到很多層面的點滴事。透過每篇 EP 的分享把這些點滴整理,看起來或許像是個獨立的小品抒發文、也或許是一系列技術研究文!?
總之,就當作的隨手雜記文吧!
本篇是 莫名其妙就跟世界等級的 OpenSource 專案攪和了!? 系列文的 EP17。
就如同前一回 EP16 所提及的要搞定 MSVC 版本的 Gstreamer 之前,就得先搞定 Avalonia UI 能夠透過 gstreamer-sharp 透過 binding 來使用 Gstreamer 的這部分。
所以,就先來追朔一下 "gstreamer-netcore" 是怎麼做到的。
把整個存放庫 Clone 回來後 Checkout 在 master 分支上最新的 Commit 時,用 Visual Studio 方案總管瀏覽時會看到一個比較神奇 (少見多怪?) 的狀況,整個存放庫的程式裡沒有 *.sln 檔案:
透過 Visual Studio 的方案總管來看時,確實可以看到 samples 資料夾裡面有兩個資料夾:
切換到 "顯示所有檔案" 才會看到其資料夾內容。
(不過,當看到這兩個資料夾內有 .vscode 的子目錄,就大概可以猜想到大概是發生了什麼事。)
截至目前為止,個人還是會習慣用 Visual Studio 來開發 .NET 程式,所以把整個存放庫的架構改成這樣(右圖):
並 Commit 到從 gstreamer-netcore 來進行 fork 後,所建立的新存放庫(
gstreamer-sharp-netcore)。
若有興趣可以參考該 Commit:
fix: add solution file for vs。
在不做任何原存放庫的程式碼的異動下,使用上述修改的 Commit 則可以直接透過 Visual Studio 測試執行 samples 方案資料夾裡面的兩個專案程式:
在 Visual Studio 的目標執行專案當中就可以切換兩個專案來執行:
BTW,由於兩個專案的 TargetFramework 都還是使用 netcoreapp3.1,所以要順利正常執行要記得先安裝 netcoreapp3.1 的 .NET Runtime
如果沒有安裝對應的 .NET Runtime 的話,執行的結果會如下顯示:
ㄟ...都...
那...那個 Gstreamer 的安裝就不用提了吧!?