3

我想知道为我的 C# winforms 项目正确创建开发和生产环境的最佳方法是什么。可惜的是没有开发环境。相反,每次我希望创建生产或开发版本时,我都必须指定发布路径。此外,由于每个 prod 或 dev 构建使用不同的连接字符串,我必须然后进入代码并更改它。

编辑我想补充的另一件事是,可以说“测试人员”将从本地 .exe 运行程序,该程序将查看源文件并检测是否需要进行更新。我提到这一点的唯一原因是因为测试人员不会在“调试”模式下运行代码。

有任何想法吗?

提前致谢!

4

4 回答 4

4

更新

唷,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 连接字符串来创建您的对象。

此外,连接字符串提供程序可以使用单例模式,但我不确定是否会有真正的好处。

于 2009-08-27T19:47:27.173 回答
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 环境设置适当的连接字符串。

这比在源代码中放置配置字符串和类似内容更可取。

于 2009-08-27T19:45:40.250 回答
1

您可以从配置文件中读取连接字符串。

然后,您将在 PROD 和 DEV 中使用相同的程序文件,只是不同的配置文件。

于 2009-08-27T20:12:33.427 回答
1

使用 Virtual PC 创建一个单独的环境怎么样?这是现在的最佳做法。

于 2009-08-27T20:15:21.797 回答