安装.NET包后如何自动将包引用添加到项目文件中?

How to automatically add package reference into project file after installing .NET package?

提问人:toraritte 提问时间:11/12/2023 最后编辑:toraritte 更新时间:11/12/2023 访问量:66

问:

刚进入 F#,终于弄清楚了如何将 .NET 包添加到项目中,但我设法让它工作的方式没有意义。安装包后(使用 或 ),我必须手动添加对项目文件的引用(通过直接编辑它或使用 dotnet add package)。这个额外的步骤通常是用其他语言自动执行的,所以我认为我做错了什么。nugetpaket

这些是我在 Mac M1 上执行的步骤:

  1. “安装”F#

    nix-shell -p dotnet-sdk_7
    
  2. 按照命令行工具的 F# 入门 - .NET |Microsoft 学习。(无错误。

  3. 按照安装指南进行安装paket

  4. 按照有关添加依赖项的演练进行操作。

    具体说来:

    1. 添加到nuget FSharpPluspaket.dependencies
    2. 创建了 与 行src/App/paket.referencesFSharpPlus
    3. dotnet paket install

    完成后,只需添加到 ,然后运行,然后运行 ,然后爆炸open FSharpPlussrc/App/Program.fsdotnet restoredotnet build

    error FS0039: The namespace or module 'FSharpPlus' is not defined.
    

修复很简单,

dotnet add src/App/App.fsproj package "FSharpPlus" --version "1.5.0"

但是我很难相信必须为每个包手动添加这些引用。


更新:好吧,我正式一无所知。只是出于好奇,我加了 ,然后跑了open Giraffe.Htmxsrc/App/Program.fs

dotnet add src/App/App.fsproj package "Giraffe.Htmx" --version "1.9.6"
dotnet build

一切都奏效了......那么使用OR有什么意义呢?paketnuget

.net-core f# nuget paket

评论

2赞 Martin521 11/12/2023
对于小型项目来说,paket 是矫枉过正。在具有复杂依赖关系图的大型项目中,您需要它。对于小型项目,您只需 ,正如您已经发现的那样(或让您的 IDE 完成),然后自动安装包。dotnet add
0赞 toraritte 11/12/2023
@Martin521 谢谢!到目前为止,这是一段相当长的旅程..:)

答:

2赞 Jaden.C.Brown 11/12/2023 #1

将 Paket 与 F# 一起使用时,如果按照正确的步骤操作,通常不需要手动编辑项目文件来添加引用。使用 Paket 的进程应该会自动处理依赖项。下面是一个应该有效的常规工作流:

  1. 在解决方案目录中初始化 Paket。
  2. 将依赖项添加到文件中。paket.dependencies
  3. 将包添加到项目目录中的文件中。paket.references
  4. 运行它应该下载包并自动更新您的项目 () 文件以包含正确的引用。dotnet paket install.fsproj
  5. 然后,可以使用 and 还原任何其他包并生成项目。dotnet restoredotnet build

如果遇到问题,可能是 Paket 集成存在问题,或者 Paket 版本与 .NET SDK 版本不匹配。查看 Paket 文档以获取兼容性说明或向 F# 社区寻求帮助可能会提供更多见解。这也可能是 M1 Mac 特定于平台的问题。 始终确保您使用的是与您的系统兼容的最新版本的工具。

评论

0赞 toraritte 11/12/2023
感谢您在第 4 步中确认。项目文件确实应该自动更新;特别是因为我没有在文档中看到这一点,但这是有道理的。这可能是因为在 Mac 上执行此操作和/或使用 Nix。下次会在 Windows 机器上尝试一下。