为 .Net IIS App 定义依赖于开发人员的变量的最佳方法

Best way to define developer-dependent variables for .Net IIS App

我有一个由多个开发人员共享的 .Net 应用程序。一些开发人员想要 Application_Start() 中的不同配置,但我们都共享相同的代码库。

定义不同开发人员可以更改的自定义变量的最佳方法是什么?

我目前的做法是:

string value = Environment.GetEnvironmentVariable(UserEnvironmentalVariableName, EnvironmentVariableTarget.User);

但是应用程序不在 IIS 上的用户帐户下 运行,所以这不起作用。

三个想法:

1) 如何使用普通的 AppSettings 并在您的应用程序 web.config 中存储所有对每个人来说都是标准的设置。 然后任何人都可以在他们的根 web.config 中存储他们想要的任何其他变量(如 \Windows\Microsoft.NET\Framework64\v4.0.30319\config\web.config)。只要 "UserEnvironmentalVariableName" 不在您的应用程序的 web.config 中,它就会继承计算机根目录中的任何内容 web.config.

2) 如果开发人员正在使用 Windows10,另一个可以很好地配合您现有代码的选项是您现在可以在应用程序池级别设置环境变量

appcmd.exe set config  -section:system.applicationHost/applicationPools /+"[name='DefaultAppPool'].environmentVariables.[name='myPersonalVariable',value='some value']" /commit:apphost

或者只需编辑 applicationHost.config 并像下面那样添加它们:

    <applicationPools>
        <add name="DefaultAppPool" managedRuntimeVersion="v4.0">
            <environmentVariables>
                <add name="myPersonalVariable" value="some value" />
            </environmentVariables>
        </add>
    </applicationPools>

3) 另一个是在 Visual Studio 中使用配置转换:https://msdn.microsoft.com/en-us/library/dd465318.aspx