我正在尝试查询主要的单个团队项目,TfsTeamProjectCollection其中总共包含194个团队项目.我确切地知道如何WorkItem通过Id得到一个WorkItemStore.问题是,通过这样做,API搜索集合中的所有项目,查询大约需要一分钟.这太慢了,必须有一种直接从单个团队项目查询工作项的方法吗?这是我的代码:
private Uri collectionUri;
private TfsTeamProjectCollection projectCollection;
private WorkItemStore workItemStore;
public Project GetTeamProject()
{
projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(collectionUri);
workItemStore = projectCollection.GetService<WorkItemStore>();
Project teamProject = workItemStore.Projects[TFS_PROJECT_KEY];
return teamProject;
}
Run Code Online (Sandbox Code Playgroud)
既然我有我感兴趣的团队项目,我如何通过ID查询工作项或者只获取该项目中的所有工作项?
在我的一台机器上,我从任何GetLocalWorkspaceInfo调用中得到null的返回值.对于这个简单的程序,我已经孤立到问题甚至失败了:
namespace WorkstationTest
{
using Microsoft.TeamFoundation.VersionControl.Client;
class Program
{
static void Main()
{
string workspaceLocalPath = @"C:\Dev";
var info = Workstation.Current
.GetLocalWorkspaceInfo(workspaceLocalPath);
// info is always null here
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经检查过:
完全相同的代码就像我应该的那样在我的另一台机器上工作.
我已经确认我有一个工作区 C:\Dev

我创建了一个新工作区并在不同的目录中更改workspaceLocalPath了代码中的变量以匹配.
我查阅了文档,其中声明返回值为null if the path is not in a workspace.从上图中,路径应位于工作区中.
然而,一切似乎都表明这应该有效.有什么我可以失踪的吗?
有没有人有任何好的资源来使用TFS 2010 API?我特别关注如何创建,读取,更新和删除工作项.
我需要以编程方式找到有关TFS中分支的信息.例如,我感兴趣的主要内容是给根文件夹$/MyProject/Project1我需要找出其他文件夹已从中分支出来.我只是在正确的API方法之后.
假设我已连接到TFS服务器并具有访问权限VersionControlServer和Workspace类实例.
我正在尝试使用SDK以编程方式从TFS中提取最新版本的源代码,而我所做的某些方法不起作用:
string workspaceName = "MyWorkspace";
string projectPath = "/TestApp";
string workingDirectory = "C:\Projects\Test\TestApp";
VersionControlServer sourceControl; // actually instantiated before this method...
Workspace[] workspaces = sourceControl.QueryWorkspaces(workspaceName, sourceControl.AuthenticatedUser, Workstation.Current.Name);
if (workspaces.Length > 0)
{
sourceControl.DeleteWorkspace(workspaceName, sourceControl.AuthenticatedUser);
}
Workspace workspace = sourceControl.CreateWorkspace(workspaceName, sourceControl.AuthenticatedUser, "Temporary Workspace");
try
{
workspace.Map(projectPath, workingDirectory);
GetRequest request = new GetRequest(new ItemSpec(projectPath, RecursionType.Full), VersionSpec.Latest);
GetStatus status = workspace.Get(request, GetOptions.GetAll | GetOptions.Overwrite); // this line doesn't do anything - no failures or errors
}
finally
{
if (workspace != null)
{ …Run Code Online (Sandbox Code Playgroud) 我找到了几个关于使用TFS API检索测试结果的示例,但没有关于以编程方式创建结果的文档.我的目标是创建一个轻量级的替代方法,使用Microsoft Test Manager来运行手动测试.有任何人对此有经验吗?那里有没有我遗失的例子吗?
这是我到目前为止所拥有的:
ITestCaseResult CreateNewTestCaseResult(ITestSuiteEntry testCaseEntry)
{
var run = testCaseEntry.TestSuite.Plan.CreateTestRun(false /* not automated */);
run.AddTest(testCaseEntry.TestCase.Id, suiteEntry.TestSuite.DefaultConfigurations[0].Id, suiteEntry.TestSuite.Plan.Owner);
run.Save(); // so that results object is created
return run.QueryResults()[0];
}
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是启动新运行的正确方法,我不确定如何记录测试的每个操作的结果.
c# visual-studio-2010 tfs-sdk tfs2010 microsoft-test-manager
我们使用Team Foundation Server 2013公司进行源代码和任务管理.有没有办法如何通过REST API操作积压工作项?
我们的项目可通过网址访问:https://tfs.company.com/tfs/ProjectCollection/Project
我发现了这个:https://tfsodata.visualstudio.com/但这似乎只适用于https://visualstudio.com中的项目.
我还要感谢一些例子.
谢谢!
我试图切换到TFS 2015 SDK dll(版本14)有几个原因.首先,它们是nuget,第二,2013 SDK dll(版本12)需要在IIS中翻转32位标志.
我下载了nutget包,命名空间全部与现有的12版命名空间对齐.
一切都很好,本地部署没有错误.
但是,当我尝试使用该WorkItemStore服务加载项目时.
TfsTeamProjectCollection collection = new TfsTeamProjectCollection(URL);
var service = collection.GetService<WorkItemStore>();
Run Code Online (Sandbox Code Playgroud)
我明白了:
其他信息:无法加载DLL'Microsoft.WITDataStore64.dll':找不到指定的模块.(来自HRESULT的异常:0x8007007E)
当我在IIS中切换回32 bt标志时,我得到:
其他信息:无法加载DLL'Microsoft.WITDataStore32.dll':找不到指定的模块.(来自HRESULT的异常:0x8007007E)
注意:这是所有正常工作的代码,我所做的就是删除对GAC程序集的引用并添加NUGET包.
根据微软的说法,nuget软件包应该与TFS 2013一起使用,并且适用于2013 SDK的用户
现有的Windows应用程序利用旧版本的TFS Client OM.
我按照文章中的说明,在开发签入策略时支持Visual Studio的多个版本.现在,我在哪里可以找到:
Microsoft.TeamFoundation.VersionControl.Client.dll
Run Code Online (Sandbox Code Playgroud)
对于我的VS2015安装下的Team Foundation Server 2015(版本14)?(或者在NuGet?)
没有类似的东西
C:\Program Files (x86)\Microsoft Visual Studio 14\Common7\IDE\PrivateAssemblies\
Run Code Online (Sandbox Code Playgroud) 我想在特定时间(变更集)获取项目的源代码.所以我需要下载整个文件夹.我想在不同的时间做这件事并且处理不同的工作空间不是很方便.
我知道TFS获取特定版本到单独的文件夹(带工作空间)和Need命令从TFS获取文件而没有工作空间(一个文件).
没有创建新工作区,是否有整个文件夹的解决方案?
编辑 我发现接受的答案太雄心勃勃了.我需要更简单的东西.
假设:
ChangeSetNumber从DesiredFolderTFS项目中的文件夹中获取Changeset
tProj我从Visual Studio命令提示符中的目标文件夹运行以下批处理
set workspace_name=TemporaryWorkspace%username%
set changeset= ChangeSetNumber
tf workspace -new %workspace_name% -noprompt
tf workfold -map $/tProj . -workspace:%workspace_name%
tf get $/tProj/DesiredFolder -version:C%changeset% -recursive -noprompt
tf workfold -unmap . -workspace:%workspace_name%
tf workspace -delete %workspace_name% -noprompt
Run Code Online (Sandbox Code Playgroud)
启动下载的解决方案时,必须确认删除源控制关联.