如何在 UWP 项目 VS2015 中为不同的 API 基本 URL 定义构建配置?

How to define build configurations for different API base URLs in UWP Project VS2015?

我已经开始构建 UWP 应用程序。在其中,我将进行不同的 API 部署,这些部署会更改 BaseURL,如下所示:

//DEV Api
public const string BaseURL = "http://mydevapi.com/devApi";
//Test Api
public const string BaseURL = "http://mytestapi.com/testApi";
//UAT Api
public const string BaseURL = "http://myuatapi.com/uatApi";
//Live Api
public const string BaseURL = "http://myliveapi.com/LiveApi";

所以基本上我想要一种方法来根据我正在制作的构建类型动态更改 baseURL,即开发、测试或实时。

我以前有过 iOS 的经验,在 XCode 中,我们为此创建了不同的 schemes

我看过文档,我认为我在 c# 和 Visual studio 中的最佳选择是 Build configuration,因为它被描述为:

You can create several build configurations for a solution. For example, you can configure a debug build that your testers can use to find and fix problems, and you can configure different kinds of builds that you can distribute to different customers.

我创建了一个名为 "AppName.Dev" 的新构建配置,但我如何使用它将 baseURL 常量更改为 Dev url?

这可能会作为一个基本问题出现,并表明我对 c# 和 Visual studio 缺乏经验,但即使阅读了有关它的文档,我也不知道如何实现它。帮助一个人吗?

编辑:阅读this article后,我创建了四种不同的配置并定义了条件编译符号,如下所示:

我现在已经在常量文件中使用了定义的编译符号,如下所示:

public const string BaseURL = "";
#if DEV
public const string BaseURL = "http://mydevapi.com/devApi";
#elif TEST
public const string BaseURL = "http://mytestapi.com/testApi"
#elif UAT
public const string BaseURL = "http://myuatapi.com/uatApi"
#elif LIVE
public const string BaseURL = "http://myliveapi.com/LiveApi";
#endif

然而,这些符号似乎没有工作,因为它 returns baseURL 的空字符串,即使我在 DEV 配置中 运行 它。当我整理好时会更新。

编辑 2: 搞清楚了。我的解决方案中有两个项目,我在一个项目中定义配置及其符号,同时在另一个项目中使用它们。发布答案。

要像这样添加构建配置,请按照以下步骤操作:

  1. Select 您的项目。
  2. 转到构建->配置管理器
  3. 从 Active Solution 配置下拉列表中,select New...
  4. 命名您的新配置,并select是否根据您的需要从调试、发布、临时、应用商店或none复制设置。
  5. 添加设置,例如此配置是否适用于build/deploy 或两者兼而有之,首选平台等。根据您的需要。
  6. 重复步骤 4 和 5 以获得您想要定义的任意数量的构建配置。

添加新构建配置到此结束。下一部分是定义条件编译符号。为此,请按照以下步骤操作:

  1. 收起你的项目树。
  2. 找到属性下拉菜单。
  3. 右键单击它并单击打开
  4. 属性菜单将打开。
  5. Select Build 从侧面菜单。
  6. 在标记为 配置、select 的顶部下拉列表中,您定义的构建配置。
  7. 该配置的属性将在下面打开。在标记为 "Conditional Compilation symbols" 的文本字段中,定义任意数量的符号,以 ;.
  8. 分隔

如有不解请参考以下截图:

完成这一部分后,您可以在 API 常量文件中使用您定义的符号,例如:

#if DEV
public const string BaseURL = "http://mydevapi.com/devApi";
#elif TEST
public const string BaseURL = "http://mytestapi.com/testApi"
#elif UAT
public const string BaseURL = "http://myuatapi.com/uatApi"
#elif LIVE
public const string BaseURL = "http://myliveapi.com/LiveApi";
#endif

这里DEV、TEST、UAT、LIVE是我定义的配置。