不能在.net MAUI项目中引用特定于平台的服务



我正在开发一个。net MAUI应用程序,在我的主要项目中引用特定于平台的服务时遇到了麻烦。我在DisApp24中创建了一个接口IFirebaseAuthService。我已经在FirebaseAuthService_Android和FirebaseAuthService_iOS类中分别在各自的PlatformsAndroidServices和PlatformsiOSServices文件夹中实现了这个接口。

但是,当我尝试在MauiProgram.cs文件中注册这些特定于平台的服务时,编译器找不到特定于平台的类。

下面是我的MauiProgram.cs代码:
using DisApp24.Services;
using Microsoft.Extensions.DependencyInjection;
namespace DisApp24
{
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
// Register platform-specific services.
#if __ANDROID__
builder.Services.AddSingleton<IFirebaseAuthService, DisApp24.Services.FirebaseAuthService_Android>();
#elif __IOS__
builder.Services.AddSingleton<IFirebaseAuthService, DisApp24.Services.FirebaseAuthService_iOS>();
#endif
// ...other configurations...
return builder.Build();
}
}
}

我已经尝试了以下方法来解决这个问题:

  • 更改平台特定实现的命名空间以匹配主项目命名空间。

  • 在主项目的。csproj文件中手动添加对平台特定实现的引用。

  • 创建一个全新的项目,我复制了代码,但错误保持不变

不幸的是,这些解决方案都不起作用,问题仍然存在。似乎由于某种原因,主项目无法引用Android或iOS项目。如何在。net MAUI应用程序中正确地引用和注册这些特定于平台的服务?

关于。net MAUI项目中特定于平台的参考服务:

Way1:

您可以参考官方文档:调用平台代码。它还提供了代码示例:InvokePlatformCodeDemos。

Way2:

我搜索了这方面的信息,发现了Gerald Versluis的视频:使用依赖注入的。net MAUI中的平台特定代码。他提供的解决方案简洁明了。

MauiAppBuilder.Services.AddTransient<TService, TImplementation>(IServiceCollection)

它将服务放在同一个命名空间下的特定平台上:

namespace yourProjectName.Platforms

相关内容

  • 没有找到相关文章

最新更新