在 Visual Studio 2008 中,使用 VSS 作为源码管理器,把文件签入后,文件会自动变为只读状态。在公司习惯是在某个开发人员的机器上获取最新的代码后编译,编译完之后服务器上再从 VSS 源码库里获取最新的程序供测试人员测试,在这种情况下,我们把项目生成的一个 DLL 也加会加入到 VSS 源码管理中去,所以在每次需要把项目更新到服务器上的时候,都会先把项目生成的 DLL文件签出来,编译完后再签入进去,签进去之后 DLL 文件就能变成只读的了,这个时候如果再在 VS2008 中编译项目,VS2008将会出现无法将文件“objDebugxx.dll”复制到“binxx.dll”。对路径“binxx.dll”的访问被拒绝.的错误,所以每次都得手工去掉这个 DLL 文件的只读属性。感觉很麻烦。
后来找到了一种方法,就是在项目生成之前运行一个命令,自动去掉这个 DLL 的只读属性,这样在编译的时候就不会出错了,具体设置是打开项目属性 ,然后打开“生成事件”活页,在“预生成事件命令行”下面的框里写入“attrib $(TargetPath) -R” 就可以了,这样在每次编译的时候,都会先运行这个命令去掉项目生成的 DLL 文件的只读属性。
attrib是一条dos命令,用于修改文件或文件夹的属性。
对于windows文件的常见属性有:只读.存档.隐藏和系统.
参数 :
+r
设置只读文件属性。
-r
清除只读文件属性。
+a
设置存档属性。
-a
清除存档属性。
+s
设置系统文件属性。
-s
清除系统文件属性。
+h
设置隐藏文件属性。
-h
清除隐藏文件属性。