簡體   English   中英

我可以在Mono / Linux上使用Visual Studio附帶的FSharp.Core嗎?

[英]Can I use FSharp.Core that comes with Visual Studio on Mono/Linux

因為我感到困惑,我會感激一些幫助。

如果我相信這個頁面 ,使用我的應用程序部署FSharp核心的最佳方法是將FSharp.Core.dll與app二進制文件一起復制(“xcopy部署”)。

在已編譯的應用程序中,您永遠不應假設FSharp.Core位於GAC(“全局程序集緩存”)中。 相反,您應該將適當的FSharp.Core部署為應用程序的一部分。

到目前為止一切都很好,我對Windows感到非常滿意...... 但是,關於Mono,同一頁面上寫着:

在Mono上Linux和Mac上的F#工具的標准安裝也會將最新的FSharp.Core安裝到GAC中。 他們還為該組件添加了機器范圍的綁定重定向。 這意味着,對於這些機器,應用程序將使用最新安裝的FSharp.Core

哪種提示應該使用應用程序部署FSharp核心副本,並且將從Mono GAC中獲取正確版本的FSharp核心。 我對此有兩個問題:

  1. 這迫使Windows和Linux有兩種不同的部署方案;
  2. 在Mono上,這可能會強制使用較舊的FSharp代碼而不是最新的Visual Studio中可用的代碼。

這兩個問題都可能通過始終從GitHub源和應用程序構建FSharp核心來解決,但這看起來也不是一個優雅的解決方案。 所以我想知道無論平台如何,總是使用最新FSharp核心的正確方法是什么(如果可能的話)?

我的理解是,如果將FSharp.Core與應用程序包含在任何平台中,至少對於Framework Dependent Deployments,則在查找GAC之前首先探測並使用本地bin目錄。 這里可能還有很多其他的細微之處,但至少從我的理解來看,你的本地復制版本的FSharp.Core將是你的應用程序使用的版本。

順便說一句,通過使用一些反射來查看源自FSharp.Core的加載類型並查看它來自哪個程序集,應該相對容易進行測試。 此外,我可以回憶起AppDomain.AssemblyResolve或類似的事件可能會讓你更深入地了解解決過程,甚至可以對它進行一些定制。

值得一提的是,就GAC而言,這個故事可能會在.NET Core上發生很大的變化,同時還有我上面提到的反射相關技術的可用性。

有關:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM