![](/img/trans.png)
[英]Referencing FSharp.Core from Visual Web Developer Express
[英]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核心。 我對此有兩個問題:
這兩個問題都可能通過始終從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.