我想知道为C#winforms项目正确创建开发和生产环境的最佳方法是什么。不幸的是,没有开发环境。相反,每次我希望创建生产或开发构建时,我都必须指定发布路径。此外,由于每个prod或dev构建使用不同的连接字符串,我必须进入代码并更改它。
编辑我想补充的另一件事是“测试人员”可以说是从本地.exe运行程序,它将查看源文件并检测是否存在需要更新。我提到这个的唯一原因是测试人员不会在'DEBUG'模式下运行代码。
有什么想法吗?
提前致谢!
答案 0 :(得分:3)
我不确定你的意思
不幸的是,有 没有发展环境。
但是,我会指出你可以处理像
这样的事情带有条件编译标志的此外,因为每个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环境的适当连接字符串。
这是很多首选放置配置字符串和类似的源代码。
答案 1 :(得分:3)
<强>更新强>
Whew,2009肯定是很久以前;)我将留下原始答案给后人,但是,Eric J. already stated in an updated version of his post in 2012,Slowcheetah是解决这个问题的一种更灵活的方法。它让你为每个配置创建多个配置文件。
原始回答
我无法回答发布部分,因为我不确定是否可以完成。但是,对于连接字符串部分,您可以创建一个“连接字符串提供程序类”,如果您正在开发中,它将返回开发连接字符串,如果您正在生产,则返回生产连接字符串。
我不知道您是否在配置管理器中使用调试和发布编译模式,但是可以将它与预编译器指令一起使用:
public class ConnectionStringProvider
{
public static string GetConnectionString()
{
#if (DEBUG)
return DevConnectionString;
#else
return ProdConnectionString;
#endif
}
}
如果您正在使用VS2005设置窗格(在项目设置中),则可以在其中设置2个连接字符串并使用该字符串而不是常量值。如果您使用任何.Net DataSource,则可以始终使用DEV连接字符串来创建对象。
此外,连接字符串提供程序可以使用Singleton模式,但我不确定是否会有真正的好处。
答案 2 :(得分:1)
您可以从配置文件中读取连接字符串。
然后,您将在PROD和DEV中使用相同的程序文件,只是一个不同的配置文件。
答案 3 :(得分:1)
使用Virtual PC创建单独的环境怎么样?这是现在最好的做法。