在 VS2022 上创建 Blazor/Maui 服务器应用程序并面向 MacOS 时找不到静态文件
Static files not found when creating a Blazor/Maui Server App on VS2022 and targeting MacOS
在 VS2022(Windows)上创建 Blazor Server 模板在 Windows 上运行良好。如果我发布到一个文件夹并定位 Windows,我可以在另一台 windows 机器上打开应用程序,一切都很好。
如果我发布到一个文件夹并定位 OSX,我可以在 Mac 上打开应用程序,并且 HTML 加载,但它找不到 CSS 和图标,除非我将文件从“发布”文件夹复制到我在 Mac 上的主文件夹中。
如果我将 VS2022 用于 MacOS,也会出现同样的问题。当来自 IDE 的 运行 时正常工作,如果我从 IDE 外部发布它或 运行 应用程序,则不会加载 CSS。
几周来一直在寻找这个问题的答案,但我认为几乎没有人使用 VS2022 来创建面向 MacOS 的 Blazor 应用程序,大声笑!
有人 运行 参与其中吗?我试过玩 app.UsePathBase() 和
终于通过我哥找到了天才.NET程序员。他在几分钟内想通了。很简单,但我想了很久。
在program.cs中添加1行:
webBuilder.UseContentRoot(AppContext.BaseDirectory);
旧program.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace MacOSBlazorApp1
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
之后:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace MacOSBlazorApp1
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.UseContentRoot(AppContext.BaseDirectory);
});
}
}
我不知道为什么必须在 MacOS 上添加这个而不是 Windows。我猜 MacOS 上的默认值不知何故不同!
在 VS2022(Windows)上创建 Blazor Server 模板在 Windows 上运行良好。如果我发布到一个文件夹并定位 Windows,我可以在另一台 windows 机器上打开应用程序,一切都很好。 如果我发布到一个文件夹并定位 OSX,我可以在 Mac 上打开应用程序,并且 HTML 加载,但它找不到 CSS 和图标,除非我将文件从“发布”文件夹复制到我在 Mac 上的主文件夹中。 如果我将 VS2022 用于 MacOS,也会出现同样的问题。当来自 IDE 的 运行 时正常工作,如果我从 IDE 外部发布它或 运行 应用程序,则不会加载 CSS。
几周来一直在寻找这个问题的答案,但我认为几乎没有人使用 VS2022 来创建面向 MacOS 的 Blazor 应用程序,大声笑!
有人 运行 参与其中吗?我试过玩 app.UsePathBase() 和
终于通过我哥找到了天才.NET程序员。他在几分钟内想通了。很简单,但我想了很久。
在program.cs中添加1行:
webBuilder.UseContentRoot(AppContext.BaseDirectory);
旧program.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace MacOSBlazorApp1
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
之后:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace MacOSBlazorApp1
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.UseContentRoot(AppContext.BaseDirectory);
});
}
}
我不知道为什么必须在 MacOS 上添加这个而不是 Windows。我猜 MacOS 上的默认值不知何故不同!