我想知道什么是为我的C#winforms项目正确创建开发和生产环境的最佳方法。不幸的是,没有开发环境。相反,每次我希望创建生产或开发版本时,我都必须指定发布路径。另外,由于每个产品或开发版本使用不同的连接字符串,我必须进入代码并更改它。创建C#Winform开发和生产环境
编辑另一件事我想补充的是,在“测试”可以这么说将运行从本地的.exe程序将看看源文件,并检测是否需要更新时制作。我提到这一点的唯一原因是因为测试人员不会以'DEBUG'模式运行代码。
任何想法?
在此先感谢!
我想知道什么是为我的C#winforms项目正确创建开发和生产环境的最佳方法。不幸的是,没有开发环境。相反,每次我希望创建生产或开发版本时,我都必须指定发布路径。另外,由于每个产品或开发版本使用不同的连接字符串,我必须进入代码并更改它。创建C#Winform开发和生产环境
编辑另一件事我想补充的是,在“测试”可以这么说将运行从本地的.exe程序将看看源文件,并检测是否需要更新时制作。我提到这一点的唯一原因是因为测试人员不会以'DEBUG'模式运行代码。
任何想法?
在此先感谢!
UPDATE
呼,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数据源,则始终可以使用DEV连接字符串来创建对象。
此外,连接字符串提供程序可以使用单例模式,但我不确定会有真正的好处。
我不知道你所说的
可惜的是,有没有 开发环境是什么意思。
不过,我想指出,你可以处理像
同样的事情,因为每个督促或开发人员构建使用 不同的连接字符串我必须 然后进入代码并更改 作为好。
带有条件编译标志。例如,你可能是这样的:
#if DEBUG
connString = "ABC";
#else
connString = "DEF";
#endif
DEBUG可能不是适合您的环境的标志。您可以定义自己的标志(如PROD或DEV),并指定是为特定的构建类型定义它们,还是从构建在IDE之外的命令行指定它们。
UPDATE
由于最初发布这个答案,SlowCheetah已变得可用。它允许为每个构建配置的app.config/web.config(以及任何其他XML文件,如NLog配置文件)进行XML转换。因此,如果您已经说过QA构建配置,则可以为QA设置XML转换,例如设置QA环境的适当连接字符串。
这是很多首选放置配置字符串和类似的源代码。
如果您有测试,开发,交错,生产环境,则不适合 – Kiquenet 2012-09-05 11:04:12
@Kiquenet:嗯,它可以用于多种环境。但是,使用SlowCheetah之类的更好。我适当地更新了我的答案。 – 2012-09-05 20:43:58
您可以从配置文件中读取连接字符串。
然后,您将在PROD和DEV中使用相同的程序文件,只是不同的配置文件。
感谢您的回复Fred。如果您阅读我的编辑,您可以看到人员测试不会从调试环境进行测试。这引起了另一个问题,虽然... 我可以指定发布为调试或不? – user141594 2009-08-28 13:02:57
好吧,如果它们没有运行调试代码,那么在配置文件中可能会有一个标志。但是,在这种情况下,您可以只更改连接字符串的服务器...我不认为您要搜索的内容是在Visual Studio中构建的,但我可能错了。 – Allov 2009-08-28 13:38:31
如果你看看Eric的帖子,他告诉你可以创建2个以上的编译预置(调试和发布),你可以创建一个“Test”编译设置,并在测试阶段使用这个设置。 – Allov 2009-08-28 13:43:31