Could not write lines to file/Unable to delete file, Access to the path is denied.
2010-08-23 13:14 Johnny Qian 阅读(1040) 评论(2) 编辑 收藏 举报When you get code from TFS or VSS, and you build the project, you may encounter the following error or warning message:
Error : Could not write lines to file "obj\Activities.csproj.FileList.txt". Access to the path '\obj\Activities.csproj.FileList.txt' is denied. Activities
Warning :Unable to delete file "\bin\Debug\MMOneTest.dll.config". Access to the path is denied.
Issue: As you can see, MSBuild is trying to write to the *.vbproj.FileList.txt file in the \obj folder, but access is denied. If you look at this file on disk, you will notice that it is marked as read-only. No big deal, just turn off the read-only flag. You do this and rebuild, but the build passes. Very good! You go home with a nice case of the "warm fuzzies" and sleep like a baby. In the morning you come in to the office to find that the nightly build broke with the same exception. You look at the *.vbproj.FileList.txt file and it is read-only on the build machine. You scratch your head and let out a expletives and then delete the entire \obj folder. Then the nightly build is run again and if fails again damn it! Oh look, the *.vbproj.FileList.txt file is back to read-only. Sounding familiar yet?
Problem: The build fails because the *.vbproj.FileList.txt file is read-only so MSBuild can't write to it.
Reason: The file is read-only because you checked the \obj folder into source control. When ever you do a Get source code control, the files are placed on the drive as read-only. The nightly build is configured to delete the prior run's source code (or should be) and Get from source control prior to building. Therefore every nightly build fails in the same way.
Solution: Delete the \obj or \bin folder from source control and check-in the change. That's it.
本文基于知识共享署名 2.5 中国大陆许可协议发布,欢迎转载、演绎或用于商业目的,但是必须保留本文的署名Johnny Qian和链接。