我有一个包含多个项目和几个开发人员的解决方案,每个项目都有自己的环境(当然)。为了管理每个环境之间的连接字符串,我为每个环境创建了几个app.config文件:app.config.dev,app.config.qa等。
预构建事件只是将app.config。$(ConfigurationName)复制到app.config。这个预构建事件是针对解决方案中的每个项目完成的,并且连接字符串包含在每个项目中(包括测试项目)。
当我使用预构建事件来管理app.config文件时,找不到连接字符串。我可以通过2种方法使测试运行良好:1。不要使用预构建事件来管理app.config文件选择,并自己执行或2.如果我检查app.config并使其可写,那么预构建事件就可以了。
我们正在使用Visual Studio 2008和VSS。
我想到这里最后一头白发,有什么想法吗? 提前谢谢!
解
更新预构建事件以确保app.config文件即使已签入也是可写的。预构建事件使用如下:
@echo off
attrib -r $(ProjectDir)app.config
if errorlevel 1 goto AttribFailed
copy $(ProjectDir)app.config.$(ConfigurationName) $(ProjectDir)app.config
goto BuildOK
:AttribFailed
echo Attrib -r Failed on $(ProjectDir)app.config
exit 1
:BuildOK
echo Copy Done
答案 0 :(得分:1)
听起来你的app.config不应该受源代码控制 - 只是特定于构建配置的配置文件(app.config.dev,app.config.qa等)。
话虽如此,您可以在VSS下创建可写入的签入文件。例如,通过Windows资源管理器,取消选中文件的“只读”属性。 (每次检查时都必须这样做。)
答案 1 :(得分:1)
保留签入的.config文件有一个副作用,文件保持只读。这有一个副作用,您不能通过只读文件复制文件,也不能删除它。这对于解释为什么无法使其发挥作用有很大帮助。