上使用
giraffe-template
时遇到一些问题,因此决定手动设置 Giraffe 项目。开始遵循 Giraffe 自述文件的“手动执行”部分,但立即陷入困境,而且我也看不到任何地方提到如何提供该项目。
郑重声明,Giraffe 文档很棒。我是 .NET 新手,所以我正在努力解决的部分是 .NET 项目管理、F# 和 ASP.NET Core 的基础知识 - 期望其中涵盖这些主题是不合理的。
Giraffe 项目插入
ASP.NET CoreGiraffe 文档管道,或者本身就是一个 ASP.NET Core 应用程序
,所以如果我在
中找不到问题的答案,那么可能是因为它是一个 ASP.NET Core 主题(或 F# / .NET / 等主题)。 如何创建和服务 Giraffe 项目
)创建新解决方案。
dotnet new sln -o SampleSolution
。
cd SampleSolution
ASP.NET Core 项目。
dotnet new web -lang "F#" -o src/GiraffeWebExample
dotnet new
模板可在下面的链接中找到。 (两者似乎都列出了所有内容,但不确定哪一个是最新的。)
[Microsoft Learn][.NET CLI]
)将新项目添加到解决方案。
dotnet sln add src/GiraffeWebExample/GiraffeWebExample.fsproj
.
cd src/GiraffeWebExample/
。
dotnet add package Microsoft.AspNetCore.App
dotnet add package Giraffe
/usr/local/share/dotnet/sdk/8.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.DefaultItems.Shared.targets(111,5): warning NETSDK1080: A PackageReference to Microsoft.AspNetCore.App is not necessary when targeting .NET Core 3.0 or higher. If Microsoft.NET.Sdk.Web is used, the shared framework will be referenced automatically. Otherwise, the PackageReference should be replaced with a FrameworkReference. [/Users/toraritte/dev/shed/dotnet/giraffe/ByHand/src/ByHand/ByHand.fsproj]
。
注意 仍然没有弄清楚 .NET 还必须通过哪些其他方式来设置 Web 项目,但是 [Microsoft Learn][F# Guide] 控制台应用程序和显式入口点文章中介绍了
属性。 我选择简单地复制“手动执行”部分中的示例代码之一;我更喜欢更实用的方法,所以这是第二种:EntryPoint
open System
open Microsoft.AspNetCore.Builder
open Microsoft.AspNetCore.Hosting
open Microsoft.Extensions.Hosting
open Microsoft.Extensions.DependencyInjection
open Giraffe
let webApp =
choose [
route "/ping" >=> text "pong"
route "/" >=> htmlFile "/pages/index.html" ]
let configureApp (app : IApplicationBuilder) =
// Add Giraffe to the ASP.NET Core pipeline
app.UseGiraffe webApp
let configureServices (services : IServiceCollection) =
// Add Giraffe dependencies
services.AddGiraffe() |> ignore
[<EntryPoint>]
let main _ =
Host.CreateDefaultBuilder()
.ConfigureWebHostDefaults(
fun webHostBuilder ->
webHostBuilder
.Configure(configureApp)
.ConfigureServices(configureServices)
|> ignore)
.Build()
.Run()
0
dotnet watch run
ASP.NET Core 入门文章开始。