Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 预生成事件后忽略App.Config_Vb.net_Visual Studio 2008_App Config - Fatal编程技术网

Vb.net 预生成事件后忽略App.Config

Vb.net 预生成事件后忽略App.Config,vb.net,visual-studio-2008,app-config,Vb.net,Visual Studio 2008,App Config,我有一个包含几个项目和几个开发人员的解决方案,每个项目和开发人员都有自己的环境(当然)。为了管理每个环境之间的连接字符串,我为每个环境创建了几个app.config文件:app.config.dev、app.config.qa等 预构建事件只是将app.config.$(ConfigurationName)复制到app.config。此预构建事件针对解决方案中的每个项目完成,并且连接字符串包含在每个项目中(包括测试项目) 当我使用预构建事件管理app.config文件时,找不到连接字符串。我可以

我有一个包含几个项目和几个开发人员的解决方案,每个项目和开发人员都有自己的环境(当然)。为了管理每个环境之间的连接字符串,我为每个环境创建了几个app.config文件:app.config.dev、app.config.qa等

预构建事件只是将app.config.$(ConfigurationName)复制到app.config。此预构建事件针对解决方案中的每个项目完成,并且连接字符串包含在每个项目中(包括测试项目)

当我使用预构建事件管理app.config文件时,找不到连接字符串。我可以通过两种方法让测试正常运行:1。不要使用预构建事件来管理app.config文件选择,请自己或2来管理。如果我签出app.config并使其可写,那么预构建事件就可以正常工作

我们将VisualStudio2008与VSS一起使用

我现在只剩下最后一头白发了,有什么想法吗? 提前谢谢

解决方案 更新预生成事件以确保app.config文件即使签入也可写入。以下使用的预构建事件:
@echo off

attrib-r$(ProjectDir)app.config

如果错误级别1转到属性失败

copy$(ProjectDir)app.config.$(ConfigurationName)$(ProjectDir)app.config

转到BuildOK

:AttribFailed

echo Attrib-r在$(ProjectDir)app.config上失败
退出1

:BuildOK


echo Copy Done

听起来你的app.config不应该受源代码控制-只应该是构建配置特定的配置文件(app.config.dev、app.config.qa等)


话虽如此,您可以使签入文件在VSS下可写。例如,通过windows资源管理器,取消选中文件的“只读”属性。(每次签入时都必须这样做。)

保留.config文件的签入有一个副作用,即文件保持只读。这有一个副作用,即不能在只读文件上复制文件,也不能将其删除。这对解释为什么你不能让它工作有很大帮助

最好在后期生成事件中使用attrib.exe+r使副本可写。我已经尝试过了,但是我弄乱了attrib的语法。添加错误处理代码有助于识别问题。如果app.config不在解决方案中且不受源代码管理,则在构建应用程序时不会使用它,并且我无权访问配置字符串。我将尝试在生成事件之前使其可写,而不签出文件。更新预生成事件使文件可写成功。谢谢你的建议。