【问题标题】:UWP / Visual Studio: How to make different builds variants?UWP / Visual Studio:如何制作不同的构建变体?
【发布时间】:2017-04-17 02:14:04
【问题描述】:

我的 UWP 应用需要三种不同的构建变体(风格),可以并行安装:一种用于生产,一种用于测试,一种用于开发。它们显然需要共享相同的代码库,但具有不同的常量,例如后端 URL 和 API 密钥。

在 Android Studio 中,这可以使用“构建变体”来完成,而在 Xcode 中,这可以使用“方案”来完成。 Visual Studio 相当于什么?

也许像https://msdn.microsoft.com/en-us/library/kwybya3w.aspx 那样使用配置管理器“构建配置”是可行的方法。默认情况下,我有一个 Debug 和一个 Release 配置。将它们重命名为 Production-Debug 和 Production-Release 然后创建 Testing-Debug、Testing-Release、Development-Debug 和 Development-Release 是否正确?不过我不明白的是:

  1. 这是否允许我在同一台设备上并行安装生产、测试​​和开发?
  2. 我如何知道我在代码中运行的是哪种风格(以获取不同的属性、常量)?

编辑:这是关于 UWP 应用程序,而不是网络应用程序。

【问题讨论】:

  • 如果您能告诉我 Web.Debug.Config 在 UWP 应用范围内的位置,我将非常高兴
  • @Tony_KiloPapaMikeGolf 我认为 web.config 在这里不相关,我说的是 UWP 应用程序。
  • 你是对的,read this 在 UWP 上,无法访问 System.Configuration.ConfigurationManager
  • @Tony_KiloPapaMikeGolf 谢谢。但这不是我要找的。我需要一个允许我拥有“可以并行安装的 UWP 应用程序的三种不同构建变体(风格)”的配置。

标签: c# visual-studio build uwp


【解决方案1】:

你可以像这样使用条件句:

<AppxManifest Include="Manifest.Debug.xml"
              Condition="'$(Configuration)'=='Debug'">
  <SubType>Designer</SubType>
</AppxManifest>
<AppxManifest Include="Package.appxmanifest"
              Condition="'$(Configuration)'=='Release'">
  <SubType>Designer</SubType>
</AppxManifest>

【讨论】:

  • 代码在Package.appxmanifest 内的确切位置?
  • @Allstar,不,您制作了Package.appxmanifest 的调试变体,并将其命名为Manifest.Debug.xml。上面的代码进入.csproj(UWP)或.wapproj(打包的桌面应用程序)。
  • 感谢@LOST,它有效。我只需要在新清单文件中更改 Identity 下的名称。
【解决方案2】:

在您的项目中双击 Package.appxmanifest 文件。

选择包装标签并为不同的情况输入不同的包装名称。

存储每个变体。

你的电脑会认为这些是不同的 UWP 应用。

【讨论】:

  • 但是如何将不同的 appxmanifest 文件分配给构建配置?
  • 好像你做不到,或者我没挖到那么远。这就像一个替代变体。您也可以尝试创建项目的分支并在它们之间合并代码。
  • 那么让我尝试挖掘那么远...... :)
【解决方案3】:

我使用本指南找到了解决方案:http://grogansoft.com/blog/?p=1087

我基本上最终每个构建配置都有一个 appxmanifest(重命名为 appxmanifest2,因为每个项目只能有一个 appxmanifest),然后在构建事件“预构建事件命令行”中,我将我需要的复制到项目根目录。

对于常量,我使用预处理器条件编译符号。

【讨论】:

  • 您无需重命名其他 appxmanifest。只需将其“构建操作”属性更改为“无”。由于您在预构建事件中将其复制到项目根目录,因此最终您的项目文件夹中将只有一个 appxmanifest。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-08
  • 1970-01-01
相关资源
最近更新 更多