无法从文件中删除ReadOnly属性

时间:2013-05-10 14:19:50

标签: c# tfsbuild

我正在创建一个自定义构建活动,从根本上增加版本号。

我已经按照本教程进行了操作:

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 ...

我需要改变什么?

谢谢,

1 个答案:

答案 0 :(得分:2)

我认为你需要改变:

File.SetAttributes(file, attr | ~FileAttributes.ReadOnly);

File.SetAttributes(file, attr & ~FileAttributes.ReadOnly);

此后也请致电file.refresh()