Xamarin - 在特定的构建配置中包含设置束(Settings bundle)

4
我正在使用Xamarin构建iOS应用程序,并希望实现设置捆绑,以便我们的QA部门可以将应用程序指向适当的API环境。
我想要的是根据构建配置在Xamarin iOS应用程序中包含或排除Settings bundle,因为我可能不想在Release模式下向用户公开这些数据。
您能否根据构建配置包含或排除Settings bundle,甚至更改编译到应用程序中的bundle?

我在原来的回答基础上进行了扩展,因为其他人也在询问,看看它是否对你有帮助。 - SushiHangover
2个回答

8
(I已经被问了很多次,所以我决定扩展我的原始答案。) 举个例子,在调试模式下,我想包含一个由Root.plist和一个子菜单Extra.plist组成的Setting.bundle。 在发布模式下,我想在应用程序的Setting.bundle中包含完全不同的Root.plist和没有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

Debug模式结果:

enter image description here

enter image description here

Release模式结果:

enter image description here


已添加示例项目的Github repo链接: https://github.com/sushihangover/Xamarin.iOS.Settings.Bundle - SushiHangover

2
除了条件包含不同设置包之外,您可能还需要有条件地读取应用程序中的设置。您可以使用条件编译来从设置中读取或使用硬编码值:
#if DEBUG
 //Read from settings
#else
 //Use other values.
#endif

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接