0

早上好

我正在为 Xamrin.Forms 构建包。我遵循James Montenango的做法

这是我的 .csproj 的一些重要部分

<TargetFrameworks>netstandard2.0;MonoAndroid10.0;Xamarin.iOS10</TargetFrameworks>

  <ItemGroup>
    <Compile Include="**\*.shared.cs" />
  </ItemGroup>

  <ItemGroup Condition=" $(TargetFramework.StartsWith('netstandard')) ">
    <PackageReference Include="XTricks.Shared" Version="1.0.1" />
    <PackageReference Include="Xamarin.Essentials" Version="1.6.1" />
  </ItemGroup>

  <ItemGroup Condition=" $(TargetFramework.StartsWith('MonoAndroid')) ">
    <PackageReference Include="Xamarin.Forms" Version="5.0.0.2196" />
    <PackageReference Include="Xamarin.GooglePlayServices.Location" Version="118.0.0.1" />
    <PackageReference Include="XTricks.Shared" Version="1.0.1" />
    <PackageReference Include="Xamarin.Essentials" Version="1.6.1" />
    <Compile Include="**\*.android.cs" />
  </ItemGroup>

  <ItemGroup Condition=" $(TargetFramework.StartsWith('Xamarin.iOS')) ">
    <PackageReference Include="Xamarin.Essentials" Version="1.6.1" />
    <PackageReference Include="XTricks.Shared" Version="1.0.1" />
    <Compile Include="**\*.apple.cs" />
  </ItemGroup>

除了一件重要的事情外,一切都在工作。我想为 Android 和 iOS 实现同一个类的两个实现。

为此,我声明和接口为:

IMyService.shared.cs

我创建了两个类,一个在 Android 文件夹中,名为:MyService.android.cs,它实现了 IMyService.shared.cs,第二个在 Apple 文件夹中,名为 MyService.apple.cs。

现在就像在上面的库中所做的那样,我想在共享代码中使用服务。

        private static IMyService Service
        {
            get
            {
#if NETSTANDARD1_0 || NETSTANDARD2_0
                return null;
#else
                return new MyService(); // And this code is red one. MyService cannot be found. 
#endif
            }
        }

基本上我被困在那里。有谁知道如何前进?

4

1 回答 1

0

确保您有相同的命名空间来MyService使用您的共享代码进行分类,然后您只需构建您的库。

于 2021-10-20T21:38:07.953 回答