用于在 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?
我通常会创建一个新的生成配置(称为 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.发布.配置.
在该文件中,可以为要更改的应用设置添加转换。 使用该配置文件发布时将应用转换值;本地开发仍将使用您想要的任何值。