2016-04-11 24 views
0

Bir çalışma alanına TFS'den (Microsoft.TeamFoundation kullanarak) indirilen (Microsoft.TeamFoundation) dosyaları yükleyen, dosyaları değiştiren ve silen bir C# uygulaması yazıyorum. çalışma alanı. Kullanıcının dosyaların geçici olarak PC'lerinde olduğunu asla bilmemelidir.C#, TFS, HasAdministerPermission benim bilgisayarımda yanlış değil TFS kimlik bilgileri

Kullanıcı, belirli bir TFC alanına erişemez, ancak uygulamaya yerleşik ağ kimlik bilgileri uygular. işlem nedeniyle tamamlanamıyor: Ben TF204017 aldığımda GetWorkspace

private Workspace GetWorkspace(string workSpaceName, ICredentials credentials) 
{  
var tpc = new TfsTeamProjectCollection(new Uri(this.Url), credentials); 

var versionControl = tpc.GetService<VersionControlServer>(); 

var ws = versionControl.TryGetWorkspace(this.WorkspaceFolder) 
?? versionControl.CreateWorkspace(workSpaceName, versionControl.AuthorizedUser); 

return ws; 
} 

Her şey workspace.Get kadar çalışır olduğunda

Yani bu

this.workspace = this.GetWorkspace(workspaceName, credentials); 
this.workspace.Map(this.ProjectPath, workspaceFolder); 
this.workspace.Get(); 

gibi, çalışma alanı olsun kullanıcı (ReadyAPI Test Runner), MyWorkspace çalışma alanı için bir veya daha fazla gerekli izinlere (Yönetim) sahip değildir; Geçtiğimde ve HasAdministerPermission öğesinin çalışma alanı değişkeni için izinleri kontrol ettiğimde yeterince emin olun.

Varsayımın, kimlik bilgilerinin (Test Çalıştırıcısı) yerel klasörüm hakları olmadığı yönündedir (EffectivePermissions = "Read").

Çalışma alanını genel yapmayı denedim; ve çalışma alanı sahibi adını değiştirmeyi denedi ancak bunlar işe yaramıyor. Hatta "Test Runner" kimlik bilgileriyle paylaşılan ana klasörü (oluşturulmuş ve silinmiş çalışma alanına) yapmayı denedim.

Ayrıştırılmış kimlik bilgilerimin yazma ve silme konusundaki tüm haklarına nasıl sahip olabilirim?

+0

Neden geçici olarak kaynak denetime herhangi bir dosyadan erişebiliyorsa erişime sahip olması gereken çalışma alanını kullanma – Claudius

+0

"Herhangi bir dosyadan geçici olarak karşıdan yükleme yapmak istediğinizde" açıklayabilir misiniz? –

cevap

0

Yerel çalışma alanı olmadan dosyaları TFS'den indirebilirsiniz.

İki şey gerekir: TFS sunucu adı ve dosya sunucusu adı

string tfsServerName ="yourServerName"; 
string fileServerName ="yourFileServerName"; 

şimdi sunucusuna bağlanmak:

TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(tfsServerName)); 
tpc.EnsureAuthenticated(); 
VersionControlServer sourceControl = (VersionControlServer)tpc.GetService(typeof(VersionControlServer)); 

ve şimdi son satır: Yani

sourceControl.DownloadFile(fileServerName, "your local path with file name and extension"); 

yukarıda temelleri.

+0

Mükemmel! Bunu yapabileceğini bilmiyordum. –