我構建了很多具有跨平臺定位的軟件包。我喜歡使用NuGet作爲所有明顯原因的部署,但我很難理解如何針對Linux上的Mono特定二進制文件。Visual Studio和NuGet針對Linux上的Mono
作爲一個例子,我有一個庫,在Mono for Linux版本中,引用`Mono.Posix.Helper.dll。這在Linux上是Mono特有的。它不適用於桌面。它不適用於Android上的Mono或iOS上的Mono。同一個庫有不同的桌面.NET,Windows CE上的.NET,Android上的Mono和iOS上的Mono。
看來,我需要兩樣東西,無論它的,我可以似乎找到:
- 辦法告訴的NuGet是二進制的一組特定的目標單在Linux上。我在official documentation of the NuGet schema target frameworks中看不到任何東西。
- 一種告訴Visual Studio的方法,即將使用這些二進制文件的項目以Linux上的Mono爲目標。我發現了this nice list of project GUIDs,但是,當然,Mono沒有針對Android或iOS的內容。
現在我正在用友好的後期構建任務來解決這個問題,但是當我需要創建一個使用這些包之一的新項目時,這真的不是很有趣。
我知道微軟在過去幾年一直試圖讓Linux更友好,但這似乎是一個很大的漏洞。我不能成爲這裏唯一一個爲Linux上的Mono構建代碼的人,對嗎?這裏有什麼解決方案?
你可以把你的後期構建任務變成一個MSBuild任務與關聯的.targets文件,然後將其包含到你的NuGet包中?當您安裝NuGet包時,MSBuild .targets文件將被導入到項目中。所以你的NuGet包的用戶不需要自己做任何事情就安裝它。 –