用于在Visual Studio中管理本地vs云开发配置设置的选项

时间:2013-01-28 03:57:43

标签: c# .net azure configuration

我们将来会使用Windows Azure网站来满足我们的基本托管需求。由于云与本地的配置设置非常具体,您如何管理这些设置?举例来说:

本地开发服务器:

string path = AppSettings["StoragePath"];

<add key="StoragePath" value="c:\temp" />

Windows Azure:

string path = AppSettings["StoragePath"];

<add key="StoragePath" value="xyz" />

您是否在每次发布之前手动更改配置文件中的StoragePath OR 代码中可以执行以下操作:

<add key="LocalStoragePath" value="c:\temp" />
<add key="BlobStoragePath" value="xyz" />    

string path;
if (Azure)
{
   path = AppSettings["BlobStoragePath"];
}
else
{
   path = AppSettings["LocalStoragePath"];
}

如果可以使用更晚的版本,我如何确定环境是否为Windows Azure?

3 个答案:

答案 0 :(得分:1)

我通常会创建一个新的构建配置(称为Azure)。

然后在web.config中创建你的密钥..

<add key="LocalStoragePath" value="c:\blah" />
<add key="AzureStoragePath" value="xyz" />
代码中的

写:

#if CONFIG == "Azure"
  public const String storageKey = "AzureStoragePath";
#endif CONFIG == "Debug"
  public const String storageKey = "LocalStoragePath";
#endif

并使用它:

String path = AppSettings[storageKey];

答案 1 :(得分:1)

public interface IConfigurationProvider { }

public class AzureConfigurationProvider : IConfigurationProvider { }

public class LocalConfigurationProvider : IConfigurationProvider { }

public static class ConfigurationProviderFactory
{
    private static bool _isAzure = Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.IsAvailable;

    private static Lazy<IConfigurationProvider> _provider = Lazy<IConfigurationProvider>(GetProvider);

    private static IConfigurationProvider GetProvider()
    {
         return _isAzure ?
             new AzureConfigurationProvider() :
             new LocalConfigurationProvider();
    }

    public static IConfigurationProvider Instance
    {
        get { return _provider.Value; }
    }
}

答案 2 :(得分:1)

假设您正在使用VS 2010或VS2012中的latest version Web发布功能,您可以使用发布配置文件和web.config转换轻松完成此任务。

首先,创建发布配置文件(右键单击项目,选择“发布”,然后选择对话框)。这将是进行各种配置更改的默认位置,例如连接字符串。

然后,右键单击为发布配置文件创建的.pubxml文件,应该有一个添加转换的选项。这将添加一个新的web..config,它应该出现在web.Debug.config / web.Release.config旁边。

在该文件中,您可以为要更改的应用设置添加转换。使用该配置文件发布时,将应用转换值;本地开发仍将使用您想要的任何值。