Xamarin - 在某些构建配置中包含设置包

Xamarin - Include Settings bundle in certain build configurations

我目前正在使用 Xamarin 构建一个 iOS 应用程序,并希望实现一个设置包,以便我们的 QA 部门可以将该应用程序指向适当的 API 环境。

我正在做的是根据构建配置在 Xamarin iOS 应用程序中包含或排除设置包,因为我可能不想在发布模式下向用户公开此数据。

您能否根据构建配置包含或排除设置包,甚至更改编译到应用程序中的包?

(我被问过很多次了:-),我想我会扩展我原来的答案。)

举个例子,在 Debug 模式下,我想包含一个 Setting.bundle,它由 Root.plist 和一个子菜单 Extra.plist.

组成

Release 模式下,我想在应用程序的 Setting.bundle 中包含完全不同的 Root.plistno Extra.plist

我的 .csproj 文件将如下所示:


  <ItemGroup Condition="'$(Configuration)'!='Debug'">
    <BundleResource Include="Settings.bundle\Root.plist" >
    </BundleResource>
  </ItemGroup>
  <ItemGroup Condition="'$(Configuration)'=='Debug'">
    <BundleResource Include="Settings.debug\Extra.plist" >
            <Link>Settings.bundle\Extra.plist</Link>
    </BundleResource>
    <BundleResource Include="Settings.debug\Root.plist" >
            <Link>Settings.bundle\Root.plist</Link>
    </BundleResource>
  </ItemGroup>

注:

如下所示,在 Debug 中,Xamarin 将额外的菜单项包含到我的 Root.plist 中,而在 Release 中则没有。我的 Additional Settings 子菜单也不再可用,现在标有 XXXX Release

调试模式结果:

释放模式结果:

除了有条件地包含不同的设置包之外,您可能还需要有条件地读取应用中的设置。您可以使用条件编译来读取设置或使用硬编码值:

#if DEBUG
 //Read from settings
#else
 //Use other values.
#endif