【问题标题】:Creating C# Winform Development and Production Environments创建 C# Winform 开发和生产环境
【发布时间】:2010-11-23 12:27:54
【问题描述】:

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

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

有什么想法吗?

提前致谢!

【问题讨论】:

    标签: c# winforms development-environment production-environment


    【解决方案1】:

    更新

    唷,2009 年肯定是很久以前的事了 ;) 我将把原来的答案留给后代,但是,Eric J. already stated in an updated version of his post in 2012Slowcheetah 是解决这个问题的一种更灵活的方法,因为它可以让你创建每个配置有多个配置文件。

    原答案

    我无法回答发布部分,因为我不确定它是否可以完成。但是,对于连接字符串部分,您可以创建一个“连接字符串提供程序类”,如果您处于开发阶段,它将返回开发连接字符串,如果您处于生产阶段,则返回生产连接字符串。

    我不知道你是否在配置管理器中使用了 Debug 和 Release 编译模式,但它可以与预编译器指令一起使用:

    public class ConnectionStringProvider
    {
      public static string GetConnectionString()
      {
        #if (DEBUG)
          return DevConnectionString;
        #else
          return ProdConnectionString;
        #endif
      }
    }
    

    如果您使用的是 VS2005 设置窗格(在项目设置中),您可以在其中设置 2 个连接字符串并使用它来代替常量值。如果您使用任何 .Net 数据源,您可能总是使用 DEV 连接字符串来创建您的对象。

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

    【讨论】:

    • 感谢弗雷德的回复。如果您阅读我的编辑,您会发现测试人员不会在调试环境中进行测试。这带来了另一个问题......我可以将发布指定为调试吗?
    • 好吧,如果他们没有运行调试代码,你可以在配置文件中有一个标志。但是,在这种情况下,您也可以更改连接字符串的服务器...我不认为您正在搜索的内容是在 Visual Studio 中构建的,但我可能是错的。
    • 如果您查看 Eric 的帖子,他告诉您可以创建超过 2 个编译预设(调试和发布),您可以创建一个“测试”编译设置并在测试阶段。
    • 我猜我错过了那部分。您能否链接或告诉我如何在构建时指定声明?如果可以的话,你有答案复选标记:)
    【解决方案2】:

    我不知道你的意思是什么

    不幸的是,有 没有开发环境。

    但是,我要指出,您可以处理诸如

    之类的事情

    此外,由于每个 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 环境的连接字符串。

    非常优于在源代码中放置配置字符串和类似内容。

    【讨论】:

    • 如果您有测试、开发、分段、生产环境,则不适合
    • @Kiquenet:嗯,它可以用于多种环境。但是,使用像 SlowCheetah 这样的东西会更好。我适当地更新了我的答案。
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 不幸的是,我没有虚拟环境来满足我的需求
      猜你喜欢
      • 2011-02-27
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      相关资源
      最近更新 更多