Mac/Windows開發跨平台.NET Core 控制台程序


自從微軟開始在Github上開源搞.NET Core后,.NET的跨平台逐漸就成真了。多年使用各種語言,說實話還是csharp用起來最舒服。不過現在的工作環境里使用它的機會比較少,大部分時候只是用來寫一寫命令行程序。不過,經過一段時間的開發,我發現大部分程序都可以被分離出有臉的部分/無臉的部分。

其中無臉的部分,最適合做成命令行程序。一旦你做成了命令行程序,對它進行的測試就會變得簡單,因為命令行本身就是一組API接口,只不過是以命令options的形式組織的。

這里記錄下MAC+Windows環境開發.NET Core命令行程序的小抄:

MacOS下開發.NET Core 命令行程序

  • Mac下安裝.NET Core 2.0 preview: https://www.microsoft.com/net/core/preview#macos
  • Mac下創建項目目錄,例如dothello
  • cd到dothello目錄
  • 創建控制台程序: dotnet new console ,會自動生成dothello.csproj以及Program.cs
  • 創建sln:dotnet new sln --name dothello
  • 將csproj添加到sln: dotnet sln add dothello.csproj
  • 編寫csharp代碼。
  • 編譯:dotnet build dothello.sln
  • 修改dothello.csproj,添加mac運行時
<PropertyGroup>
    <RuntimeIdentifiers>osx.10.10-x64</RuntimeIdentifiers>
</PropertyGroup>
  • 分析並准備依賴鏈:dotnet restore dothello.sln
  • 發布Mac版(無需安裝.NETCore即可運行的Self-Contain模式):dotnet publish -r osx.10.10-x64 dothello.sln -c Release
  • 如果publish后不實用-r 指定運行時,則會發布依賴於dothello.csproj里指定的framework版本運行時的程序。

配置Windows的Visual Studio 項目解決方案

可以根據上述方式發布Windows上依賴於.netcore運行時的版本或者自包含的Native包。但是,如果想發布.NET 3.5下可以跑的單exe程序,有點問題。

解決方式是,切到Windows下使用VS建好VS版本的sln和csproj:

dothello_vs.sln
dothello_vs.csproj

然后切回MacOS,使用msbuid(.netcore自帶)編譯指定frameworkd即可:

msbuild /p:TargetFramework=net35 dothello_vs.sln /p:Configuration=Release

這個地方其實publish應該做的更好一些,或者讓msbuild直接支持dotnet創建的sln。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM