我想知道为我的 C# winforms 项目正确创建开发和生产环境的最佳方法是什么。可惜的是没有开发环境。相反,每次我希望创建生产或开发版本时,我都必须指定发布路径。此外,由于每个 prod 或 dev 构建使用不同的连接字符串,我必须然后进入代码并更改它。
编辑我想补充的另一件事是,可以说“测试人员”将从本地 .exe 运行程序,该程序将查看源文件并检测是否需要进行更新。我提到这一点的唯一原因是因为测试人员不会在“调试”模式下运行代码。
有任何想法吗?
提前致谢!
我想知道为我的 C# winforms 项目正确创建开发和生产环境的最佳方法是什么。可惜的是没有开发环境。相反,每次我希望创建生产或开发版本时,我都必须指定发布路径。此外,由于每个 prod 或 dev 构建使用不同的连接字符串,我必须然后进入代码并更改它。
编辑我想补充的另一件事是,可以说“测试人员”将从本地 .exe 运行程序,该程序将查看源文件并检测是否需要进行更新。我提到这一点的唯一原因是因为测试人员不会在“调试”模式下运行代码。
有任何想法吗?
提前致谢!
更新
唷,2009 年肯定是很久以前的事了;)我将把最初的答案留给后代,但是,正如Eric J. 已经在 2012 年他的帖子的更新版本中所说的那样,Slowcheetah是一种更灵活的方法问题,因为它让您为每个配置创建多个配置文件。
原始答案
我无法回答发布部分,因为我不确定它是否可以完成。但是,对于连接字符串部分,您可以创建一个“连接字符串提供程序类”,如果您处于开发状态,它将返回开发连接字符串,或者如果您处于生产状态,则返回生产连接字符串。
我不知道您是否在配置管理器中使用 Debug 和 Release 编译模式,但可以将其与预编译器指令一起使用:
public class ConnectionStringProvider
{
public static string GetConnectionString()
{
#if (DEBUG)
return DevConnectionString;
#else
return ProdConnectionString;
#endif
}
}
如果您使用的是 VS2005 设置窗格(在项目设置中),您可以在其中设置 2 个连接字符串并使用它来代替常量值。如果您使用任何 .Net 数据源,您可能总是使用 DEV 连接字符串来创建您的对象。
此外,连接字符串提供程序可以使用单例模式,但我不确定是否会有真正的好处。
我不确定你的意思
可惜的是没有开发环境。
但是,我会指出,您可以处理诸如
此外,由于每个 prod 或 dev 构建使用不同的连接字符串,我必须然后进入代码并更改它。
带有条件编译标志。例如,您可以这样做:
#if DEBUG
connString = "ABC";
#else
connString = "DEF";
#endif
DEBUG 可能不适合您的环境。您可以定义自己的标志,例如 PROD 或 DEV,并指定是否为特定的构建类型定义它们,或者如果在 IDE 之外构建,则从命令行定义它们。
更新
自从最初发布此答案以来,SlowCheetah已经可用。它允许每个构建配置为您的 app.config/web.config(以及任何其他 XML 文件,例如 NLog 配置文件)进行 XML 转换。因此,如果您说 QA 构建配置,您可以为 QA 设置 XML 转换,例如为 QA 环境设置适当的连接字符串。
这比在源代码中放置配置字符串和类似内容更可取。
您可以从配置文件中读取连接字符串。
然后,您将在 PROD 和 DEV 中使用相同的程序文件,只是不同的配置文件。
使用 Virtual PC 创建一个单独的环境怎么样?这是现在的最佳做法。