我们正在开始一个新的WinForms项目,并决定使用TeamCity来创建构建和运行单元和集成测试。该项目涉及数据库。我们有3个数据库(developDB(开发人员在开发=时使用),testDB(由teamcity用于运行测试)和productionDB(由客户使用))。 TeamCity有3个buildConfiguration。第一个是在提交时触发的。第二个是每天晚上触发集成测试。第三个是由开发人员在我们发布什么时触发的。所以我希望TeamCity能够根据发生什么样的构建来更改connectionString。另外我不想在app.config中存储connectionString(我不希望客户端知道用户和密码)。哪些选项可用于执行该任务?
在此先感谢!
更新
我使用NHibernate和FluentNHibernate连接数据库,如果它很重要。Winforms ConnectionString和TeamCity
回答
在这种情况下,我会使用TeamCity运行一个脚本来执行构建。
NAnt允许您在构建时修改配置文件值(例如您的连接字符串)。
使用的TeamCity /恶性部署到不同的执行环境的一个例子可在这个博客帖子中找到: http://thecodedecanter.wordpress.com/2010/03/25/one-click-website-deployment-using-teamcity-nant-git-and-powershell/
作为@surfen所暗示的,为每个环境的连接字符串值应该被加密,以防止从凭证以纯文本形式存储。
我还没有使用过TeamCity,但是我在登录过程中(即在运行时)使用动态改变的ConnectionStrings编写了多个应用程序,而且它非常简单。
你没有告诉你如何连接到你的数据库。既然你提到了app.config,我想这是ADO.NET数据集或类似技术,它会在你的Settings.Designer.cs/app.config中创建一个只读(getter)ConnectionString。
我所做的,是为ConnectionString属性像这样创造Settings.cs(未Settings.Designer.cs)setter方法:
public void setNorthwindConnectionString(String value) {
this["NorthwindConnectionString"] = value;
}
我产生的数据集,然后使用该NorthwindConnectionString用于访问数据。
您可以使用预处理指令为您的ConnectionString的条件设置:
#if DEBUG
Console.WriteLine("Mode=Debug");
Settings.Default.setNorthwindConnectionString("(DebugDBConnectionString)");
#else
Console.WriteLine("Mode=Release");
Settings.Default.setNorthwindConnectionString("(ReleaseDBConnectionString)");
#endif
你也可以encrypt your connection strings和后生成事件中复制权的app.config。
我假设您将使用msbuild在Team city中构建您的项目。如果是这样的话,那么你可以发送条件编辑符号,在那里你可以传递你需要的任何符号。
一旦你的symols,你可以做这样的事情:
#if DEVBUILD
//.... Your Connection String Code here
#endif
#if INTBUILD
.... Your Connection String Code here
#endif
这回答了你的问题FRST。
看着你的问题,你在那里不希望&密码存储的用户名在App.config的第二部分,
选项:
- 尝试intergrated的安全性,它会使用您的域名账户
- 如果选项无法使用,请尝试将您的连接字符串保留为注册表项,以便其不明显或环境变量。
- 1. Winforms - 在运行时替换ConnectionString
- 2. LazyLoad和ConnectionString
- 3. 固定的connectionString
- 4. TeamCity和PHP
- 5. Flex,Ant和TeamCity
- 6. TeamCity和JIRA?
- 7. PartCover和TeamCity
- 8. TeamCity 5.1.3和FogBugz
- 9. TeamCity MSTest和TestList?
- 10. Teamcity和MSBuild 4.5
- 11. TeamCity和Mercurial https
- 12. TeamCity和Git
- 13. TeamCity 10和xUnit
- 14. Teamcity和localdb
- 15. Teamcity和Grails
- 16. C#ConnectionString
- 17. SYSBASE CONNECTIONSTRING
- 18. TeamCity的阅读和
- 19. TeamCity和Rails部署
- 20. 的Node.js和TeamCity的
- 21. 如何运行White + Teamcity(Winforms应用程序)
- 22. ConnectionString的ODBC PWD
- 23. ConnectionString上的NullReference
- 24. connectionString加密
- 25. ASP.NET ConnectionString AttachDbFilename = | DataDirectory |
- 26. connectionstring to sqlmembershipprovider asp.net
- 27. Store中的ConnectionString
- 28. 网站的connectionString
- 29. 的ConnectionString在LinqToSQL
- 30. ConnectionString值错误
Downvoter - 请添加评论,以解释为什么您投下了接受的答案? – DaveRead 2014-03-14 12:03:42