我正在创建一个自定义构建活动,从根本上增加版本号。
我已经按照本教程进行了操作:
http://www.richard-banks.org/2010/07/how-to-versioning-builds-with-tfs-2010.html
该教程可能有点过时,因为我正在使用VS / TFS 2012但是对于该领域,我对本教程的内容无关紧要。
//Loop through files in the workspace
foreach (var file in Directory.GetFiles(folder.LocalItem, fileMask, SearchOption.AllDirectories))
{
FileAttributes attr = File.GetAttributes(file);
//Set the read only attribute, if we want to
if (readOnlyFlagValue)
{
File.SetAttributes(file, attr | FileAttributes.ReadOnly)
context.TrackBuildMessage(string.Format("Set ReadOnly on {0}", file));
}
//Remove the readonly attribute, if we want to
else
{
File.SetAttributes(file, attr | ~FileAttributes.ReadOnly);
context.TrackBuildMessage(string.Format("Removed ReadOnly from {0}", file));
context.TrackBuildMessage(string.Format("Is ReadOnly = {0}", File.GetAttributes(file).HasFlag(FileAttributes.ReadOnly)));
}
}
在我的日志文件中,我得到了:
从C:\ Builds \ 1 ...
中删除了ReadOnly
然而,我得到的下一条消息是:
ReadOnly = True
这在此过程中会导致问题,显然当我尝试将WriteAllText
这样的内容用于文件时我会UnauthorizedException
...
我需要改变什么?
谢谢,
路
答案 0 :(得分:2)
我认为你需要改变:
File.SetAttributes(file, attr | ~FileAttributes.ReadOnly);
到
File.SetAttributes(file, attr & ~FileAttributes.ReadOnly);
此后也请致电file.refresh()
。