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

3
我已经开始构建一个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,因为它被描述为:
“您可以为解决方案创建多个构建配置。例如,您可以配置一个调试构建,供测试人员用于查找和修复问题,您可以配置不同类型的构建,分别分发给不同的客户。”
我已经创建了一个名为“AppName.Dev”的新构建配置,但如何使用它来将 baseURL 常量更改为 Dev URL?
这可能会让人感到基础,并显示出我对 c# 和 Visual Studio 的不熟练,但即使我阅读了相关文档,也无法想象如何实现它。你能帮帮我吗?
编辑:阅读了这篇文章之后,我创建了四个不同的配置,并定义了如下的条件编译符号:

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

这段话的意思是:尽管我正在使用 DEV 配置,但符号似乎无法正常工作,因为它返回了空字符串,甚至 baseURL 也是如此。如果我解决了这个问题,我会更新的。
编辑2:我弄清楚了。我的解决方案中有两个项目,我在一个项目中定义了配置和它们的符号,而在另一个项目中使用它们。我会发布一个答案。
1个回答

2
要添加这样的构建配置,请按照以下步骤操作:
  1. 选择您的项目。
  2. 进入 build->configuration manager
  3. 从活动解决方案配置下拉列表中,选择 New...
  4. 根据您的需求为新配置命名,并选择它是否从 Debug、release、ad hoc、App store 或 none 复制设置。 enter image description here
  5. 根据您的需求添加设置,例如此配置是用于构建/部署还是两者都包括,首选平台等。
  6. 为定义的构建配置重复步骤 4 和 5。

这就完成了添加新的构建配置。接下来是定义条件编译符号。为此,请按照以下步骤操作:

  1. 折叠您的项目树。
  2. 找到属性下拉菜单。
  3. 右键单击它,然后单击打开
  4. 将打开一个属性菜单。
  5. 从侧边菜单中选择生成
  6. 从标记为配置的顶部下拉菜单中,选择您定义的生成配置。
  7. 该配置的属性将在下面打开。在标记为“条件编译符号”的文本字段中,定义尽可能多的符号,用;分隔。

如果有任何疑问,请参考以下截图:

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是我定义的配置。


当我在发布模式下调试时,程序非常慢,并且一直在编译。 - HeroWong
(在撰写此文时)我无法相信,我必须硬编码所有的URL,而没有一个像WebApi项目那样的正确app.config文件。这应该是一个简单的任务... - Gianni B.
@GianniB. 我从未在WebApis上工作过,所以我不清楚。你可以说这只是一个新的UWP开发人员找到的粗糙解决方法,让事情开始运转起来。如果你碰巧找到更好的方法,我会非常感激如果你能给我提供链接。也许我能够修复我的应用程序中的问题。 - NSNoob
1
我不怪你的解决方案,我怪微软没有为我们提供更简单的UWP应用程序解决方案。 顺便说一下,我的方法是为每个构建(例如Debug.confg,Test.config,Production.config)创建一个文件(txt,键/值,json随你喜欢),在其中存储我的变量(例如api url),然后硬编码文件名并使用条件编译符号。要读取UWP应用程序的文件(必须使用Windows API),我建议你阅读这篇博客文章。这将允许您在不重新编译的情况下编辑URL。 - Gianni B.

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