在没有RELEASE构建时更改行为

时间:2011-11-03 14:09:53

标签: .net visual-studio visual-studio-2010 msbuild configuration-files

在DEV,TEST和RELEASE构建之间改变行为的最佳方法是什么?

我有一个应用程序可以将电子邮件发送给存储在数据库中的收件人。在开发和测试时,我想覆盖所需的行为,并将电子邮件发送给使用该应用程序的人(例如开发人员或测试人员)。

当我们去制作时,我当然希望将它发送到来自数据库的电子邮件。

我考虑过将RELEASE常量添加为discussed here

有没有人就实现这一目标的最佳方式提出一些建议,或建议更好的方法来解决问题?

5 个答案:

答案 0 :(得分:4)

使用界面包裹电子邮件发送功能,例如INotifier.Send()。以多种方式实施它:

  • EmailNotifier : INotifier发布(发送电子邮件)

  • LocalNotifier : INotifier用于调试(写入控制台)

  • MockNotifier : INotifier进行测试(断言某些条件)

将类的类型放入特定于配置的配置中,并通过通知发送模块读取并调用它。请参阅Web.config transform

答案 1 :(得分:1)

如果您使用的是ASP.NET,则可以根据当前的发布配置更改web.config设置。

http://msdn.microsoft.com/en-us/library/dd465318.aspx

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="MyDB" 
      connectionString="ReleaseSQLServer" 
      xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
</configuration>

答案 2 :(得分:1)

在我们的项目中,我们将“Environment”和“EmailsToInTestEnvironment”等密钥添加到配置文件中。在“环境”中,我们指定“生产”或“测试”,如果是“测试”,则应用程序将原始电子邮件替换为“EmailsToInTestEnvironment”中列出的电子邮件。

为了简单和逼真,替换发生在发送电子邮件的方法中,而不是在调用它的方法中。在电子邮件发出之前,原始地址会被替换,一旦发送电子邮件,就会返回原始电子邮件地址。

答案 3 :(得分:1)

我正在使用XmlPreprocess tool进行配置文件操作。它使用一个映射文件用于多个环境。您可以通过Excel编辑映射文件。它非常易于使用。

答案 4 :(得分:0)

这应该通过为您的应用程序使用单独的配置文件来完成。 Visual Studio已经为您提供调试和发布分离。如果通过测试你的意思是单元测试,那么加载你的应用程序的测试项目将能够在那里使用它自己的配置文件。