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

本文关键字:开发 云开 配置 设置 选项 Visual Studio 管理 用于 | 更新日期: 2023-09-27 17:56:11

我们将来将使用Windows Azure网站来满足我们的基本托管需求。 由于云与本地有非常具体的配置设置,因此您如何管理这些设置? 以以下内容为例:

本地开发服务器:

string path = AppSettings["StoragePath"];
<add key="StoragePath" value="c:'temp" />

Windows Azure:

string path = AppSettings["StoragePath"];
<add key="StoragePath" value="xyz" />

您是否在每个版本之前手动更改配置文件中的 StoragePath,或者代码中是否有可以执行的操作,例如:

<add key="LocalStoragePath" value="c:'temp" />
<add key="BlobStoragePath" value="xyz" />    
string path;
if (Azure)
{
   path = AppSettings["BlobStoragePath"];
}
else
{
   path = AppSettings["LocalStoragePath"];
}

如果后者是可能的,我如何确定环境是否是Windows Azure?

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

我通常会创建一个新的生成配置(称为 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];
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; }
    }
}

假设您在VS 2010或VS2012中使用最新版本的Web发布功能,则可以使用发布配置文件和web.config转换相当轻松地完成此操作。

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

然后,右键单击为发布配置文件创建的 .pubxml 文件,应该有一个用于添加转换的选项。 这将添加一个新网站。配置,应显示在 Web 旁边。Debug.config/web.发布.配置.

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