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

时间:2017-01-02 11:27:42

标签: c# visual-studio uwp buildconfiguration

我已经开始构建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,即Dev,Test或Live。

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

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

  

您可以为解决方案创建多个构建配置。对于   例如,您可以配置测试人员可以使用的调试版本   查找并修复问题,您可以配置不同类型的构建   您可以分发给不同的客户。

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

这可能是一个基本问题,并显示我对c#和Visual studio缺乏经验,但我无法弄清楚即使在阅读了文档之后我如何实现它。帮助一个家伙?

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

enter image description here

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

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

然而,符号似乎不起作用,因为它返回baseURL的空字符串,即使我在DEV配置中运行它。当我整理出来时会更新。

编辑2:想出来。我在我的解决方案中有两个项目,我在一个项目中定义配置及其符号,而在另一个项目中使用它们。发表答案。

1 个答案:

答案 0 :(得分:1)

要添加此类构建配置,请执行以下步骤:

  1. 选择您的项目。
  2. 转到 build - > 配置管理器
  3. 从Active Solution配置下拉列表中,选择 New ...
  4. 为新配置命名,并根据您的需要选择是从Debug,release,ad hoc,App store还是none复制设置。  enter image description here
  5. 添加设置,例如此配置是否用于构建/部署 或两者,根据您的需要,首选平台等。
  6. 重复步骤4& 5,您可以根据需要定义多个构建配置。
  7. 这样就完成了添加新的构建配置。下一部分是定义条件编译符号。为此,请按照以下步骤操作:

    1. 折叠项目树。
    2. 找到“属性”下拉列表。
    3. 右键单击它,然后单击打开
    4. 将打开属性菜单。
    5. 从侧边菜单中选择 Build
    6. 从标有 Configuration 的顶部下拉列表中,选择您定义的构建配置。
    7. 该配置的属性将在下面打开。在标有“条件编译符号”的文本字段中,根据需要定义任意数量的符号,以;分隔。
    8. 如果您有任何疑惑,请参阅以下屏幕截图:

      enter image description here

      完成此部分后,您可以在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是我定义的配置。

相关问题