条件编译符号作为用户首选项

时间:2014-12-01 00:06:11

标签: c# conditional-compilation

在我团队的部署环境中,某些REST数据api有三个端点:alpha,beta和production。

我已经设置了条件编译,因此在RELEASE配置中,项目肯定会连接到生产API。但是,在DEBUG配置中,项目可以根据开发人员的偏好连接到三个端点中的任何一个。

目前,开发人员通过注释掉不需要的端点来设置此首选项。

但是,不同的开发人员希望在开发期间连接到不同的端点,因此该系统与git和团队不能很好地协作。如何更改设置,以便仅在DEBUG配置中根据开发人员首选项(而不是提交给git)选择api端点?

    const string api_prod = "https://api.mydomain.com/api/";
    const string api_beta = "https://betaapi.mydomain.com/api/";
    const string api_alpha = "https://alphaapi.mydomain.com/api/";

#if DEBUG
    //static readonly string BaseUrl = api_prod;
    //static readonly string BaseUrl = api_beta;
    static readonly string BaseUrl = api_alpha;
#else
    static readonly string BaseUrl = api_prod;
#endif

2 个答案:

答案 0 :(得分:0)

您应该使用外部配置文件,并使其包含依赖于编译配置。看看慢速猎豹https://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5

保持硬编码的uris永远不是一个好主意。

答案 1 :(得分:0)

我同意另一个答案,因为最好使用.config或类似机制来存储URL。也就是说,正如你所指出的那样,并没有真正解决你所问的问题。这是你应该解决的问题,但修复它不会改变基本问题。

您对“开发者偏好”的含义并不十分清楚。但是,您可以使用至少一些不同的方法:

  1. 环境变量。开发人员将其设置一次,然后程序检查该值以确定要使用的URL。
  2. 应用程序设置。开发人员设置一次(为方便起见,最好是通过程序UI的某些部分),最终存储在AppData下的Designer控制的.config文件中。
  3. 一些自定义配置文件。只要程序知道要查找的位置,这可以是您喜欢的任何地方(例如%USERPROFILE%\Documents\MyProgam\custom.settings.config)。
  4. 这不是一份详尽的清单。如果你有更具体的想法,你需要在你的问题中解释。

相关问题