我碰上了this &假設它也和這個問題有關。
@Duat建議在Build-Agent服務器的範圍內爲我工作。然而,在你的另一個問題中,你提到了一個網絡驅動器 - 所以我想你說的是位於你的構建的放置位置的文件,或者是MSBuild/MSDeploy部署解決方案的目標計算機上的文件。
我會推進第一個假設(所以,我們將重點放在放置位置),但它應該類似於處理這兩種情況。
這個想法基於戰略上的'xcopy'。 (默認情況下'xcopy'在執行期間將所有文件屬性重置爲讀寫)
第一步是構建一個自定義活動,將您需要的文件設置爲讀寫。活動的快速初稿可以在此(它意味着改變一個文件,而不是一個目錄的屬性):
namespace BuildTasks.Activities
{
using System;
using System.Activities;
using System.IO;
using Microsoft.TeamFoundation.Build.Client;
[BuildActivity(HostEnvironmentOption.Agent)]
public sealed class MakeFileWriteable : CodeActivity
{
[RequiredArgument]
public InArgument<string> FilePath
{
get;
set;
}
protected override void Execute(CodeActivityContext context)
{
String filePath = FilePath.Get(context);
//add exception handling
FileAttributes fileAttributes = File.GetAttributes(filePath);
File.SetAttributes(filePath, fileAttributes & ~FileAttributes.ReadOnly);
}
}
}
第二步,現在,一旦你在構建解決方案有MakeFileWritable
,是改變從這個
您的構建定義弄成這個樣子
在MakeFileWriteable
文件應該從BuildAgent內,是FROMFIL E在調用過程中:
TOFILE是文件應該放置的位置。
請記住在參數中設置「/ Y」,因爲您將覆蓋該文件。
這正是我們過去某些時候所做的。我們已經獲得幫助編寫了[this]的實際活動(http://stackoverflow.com/questions/1202022/best-way-to-make-a-file-writeable-in-c) – pantelif
我做了類似的事情 –
同樣 - 工作一種享受。 –