2017-06-19 21 views
0

私は、Visual Studio Team Servicesとの対話のためにMicrosoftが提供する.NETライブラリを使用しています。 Team Foundation Power ToolsやVisual Studioを使わずに作業フォルダのローカルパスを変更できるようにしたいのですが、作成しているクラスライブラリのみを使用しています。作業フォルダの場所をプログラムで変更するにはどうすればよいですか?

問題は、新しい場所のソースコントロールで変更が認識されないということです。ワークスペースのPower Toolsメニューから新しい作業フォルダを見ることはできますが、作業フォルダ内の変更は自動的に検出されません。

これは、この機能のために私のコードです:

this.workingFolder = new WorkingFolder(this.workingFolder.ServerItem, newLocalFolder); 
      workspace.CreateMapping(workingFolder); 
      UpdateWorkspace(); 

public int UpdateWorkspace() 
     { 
      // Check if user has read permissions. 
      CheckWorkspacePermissions(); 
      // Update the workspace with most recent version of the project files from the repository. 
      GetStatus status = workspace.Get(); 
      Console.Write("Conflicts from checkout: "); 
      Console.WriteLine(status.NumConflicts); 
      return status.NumConflicts; 
     } 

私は無知です。これらの.NETライブラリのドキュメントは実際には存在しないので、なぜこれが動作しないのかわかりません。

EDIT:私のコードをリファクタリングした後に作業が開始されたようです。紛争の存在は時にはうまくいかないことにも役立ちます。コードの下で

+0

を、新しいファイルと修正されたファイルをすることができ検出された。電動工具でチェックインが変更された場合、「チェックインするための変更はありません」と表示されますか?古い作業フォルダで変更を検出できますか?新しいワークスペースで試してみたらどうなるのですか? –

+0

はい、チェックインしようとすると、チェックインするための変更がないというメッセージが表示されます。 – sonicadv27

+0

変更が古い作業フォルダで検出できますか?新しいワークスペースで試してみたらどうなるのですか? –

答えて

1

することは、そのようなC:\Users\TFSTest\Source\Workspaces\G1\1からC:\Users\TFSTest\Source\Workspaces\G1\TryTFVCからの変化としてTFVCレポ(TryTFVC)マップパス、変更することができます:私はこの問題を再現することはできません

NetworkCredential cred1 = new NetworkCredential("alternate credential username", "alternate credential password"); 
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri("https://account.visualstudio.com"), cred1); 
VersionControlServer versionControl = tpc.GetService<VersionControlServer>(); 
Workspace ws = versionControl.GetWorkspace(@"C:\Users\TFSTest\Source\Workspaces\G11\TryTFVC");//older path 
WorkingFolder wf = new WorkingFolder("$/TryTFVC", @"C:\Users\TFSTest\Source\Workspaces\G1\1"); 
ws.CreateMapping(wf); //map with new path 
ws.Get(); 

GetStatus status = ws.Get(); 
Console.Write("Conflicts from checkout: "); 
Console.WriteLine(status.NumConflicts); 
関連する問題