簡體   English   中英

F# 構建錯誤:“沒有為提供的命名空間編譯表示”

[英]F# build error: "No compiled representation for provided namespace"

有沒有人遇到過這個錯誤信息? 谷歌在源代碼中為我找到了它(https://github.com/fsharp/fsharp/blob/master/src/fsharp/tast.fs ),但我一點也不知道是什么原因造成的。

當我嘗試將我的庫項目從 .NET 5 升級到 .NET 6 時,這種情況開始發生,所以我的問題的真正答案可能是對我在那里做錯了什么的解釋。 我所做的只是:

  1. 在 fsproj 中,將“TargetFramework”從“net5.0”更改為“net6.0”
  2. 在我的 paket.dependencies 文件中,將“框架”從“net5.0”更改為“net6.0”。 (我也嘗試過注釋掉“框架”這一行。)

然后在運行“paket update”和“dotnet build”之后,我得到了一個模糊的錯誤。 (“錯誤 FS0192:內部錯誤:提供的命名空間沒有編譯表示”)

更新:在一些費力的代碼注釋/取消注釋等之后,我相信我已經將其縮小到我的代碼對 Fable.RegexProvider 程序集的使用。 (我使用 SafeRegex 組件。)RegexProvider 已經有幾年沒有更新了。 我會提醒那邊的人注意這個問題,如果/當我學到任何東西時,我會在這里發布更新。 (以防其他人遇到這種情況。)

萬一其他人遇到這種情況,這里是解決方案(這是上面推薦的解決方案@CaringDev,盡管它僅適用於 Fable 3.7.18 及之后的版本):

When I raised this issue on the Fable.RegexProvider github (see thread here: https://github.com/fable-compiler/Fable.RegexProvider/issues/9 ), the initial thought was to try a .NET 6 build of Fable.正則表達式提供者。 但隨后Alfonso Garcia-Caro意識到 Fable 的后續改進可能已經消除了對 SafeRegex 的需求。

他最終需要在 Fable 中進行一些調整,但從 3.7.18 版本開始,Fable 轉譯器支持使用 FSharp.Text.RegexProvider,因此現在不需要 Fable.RegexProvider。

暫無
暫無

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

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