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

C# 作为用户首选项的条件编译符号,c#,conditional-compilation,C#,Conditional Compilation,在我的团队的部署环境中,特定REST数据api有三个端点:alpha、beta和production 我已经设置了条件编译,以便在版本配置中,项目一定会连接到生产api。然而,在调试配置中,项目可以根据开发人员的偏好连接到三个端点中的任何一个 目前,开发人员通过注释掉不需要的端点来设置此首选项 然而,在开发过程中,不同的开发人员希望连接到不同的端点,所以这个系统不能很好地与git和团队一起工作。如何更改设置,以便仅在调试配置中根据开发人员偏好选择api端点(而不是提交给git) cons

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

我已经设置了条件编译,以便在版本配置中,项目一定会连接到生产api。然而,在调试配置中,项目可以根据开发人员的偏好连接到三个端点中的任何一个

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

然而,在开发过程中,不同的开发人员希望连接到不同的端点,所以这个系统不能很好地与git和团队一起工作。如何更改设置,以便仅在调试配置中根据开发人员偏好选择api端点(而不是提交给git)

    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

您应该使用外部配置文件,并使其包含依赖于编译配置。看看慢猎豹


保留硬编码的URI从来都不是一个好主意。

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

你不太清楚这里的“开发者偏好”是什么。但是,您至少可以使用几种不同的方法:

  • 环境变量。开发者设置一次,然后程序检查该值以确定使用哪个URL
  • 应用程序设置。开发者设置它一次(为了方便起见,最好是通过程序UI的某些部分),最后存储在设计器控制的.config文件中的
    AppData
  • 一些自定义配置文件。只要程序知道要查找的位置,它可以位于您喜欢的任何位置(例如
    %USERPROFILE%\Documents\MyProgam\custom.settings.config

  • 这不是一份详尽的清单。如果您有更具体的想法,您需要在问题中对此进行解释。

    此解决方案提供了一种使用不同设置的方法,具体取决于使用保存到存储库并影响所有开发人员的.config转换的生成配置。我正在寻找一种方法,让开发人员设置一个“仅限我”的设置而不影响其他开发人员您可以使用git ignore忽略本地配置文件您可以有两个阶段的配置-默认文件(选中git)和自定义开发人员文件被git忽略。我正在寻找一种在开发人员克隆存储库时立即可用的方法,但是对于他们来说,这种方法非常快速、简单,可以在不离开开发环境的情况下进行更改,因为他们可能需要在一天内更改很多次