标签: tfs-sdk

列出tfs中文件夹的所有内容

给定tfs中文件夹的特定路径,我需要以递归方式查找给定变更集的文件夹中的所有文件和文件夹.换句话说,我需要在给定的变更集的tfs中获得路径的传递闭包.我这样做的问题是在tfs中列出特定文件夹的内容.在C#中这怎么可能?

c# tfs tfs-sdk

5
推荐指数
1
解决办法
7525
查看次数

试图从TFS工作区停止应用程序检索文件

所以我试图从TFS中的工作区检索文件.不幸的是,我所做的每一次尝试都会导致应用程序停滞不前.截至目前,这是代码:

    public void GetWorkspaceFiles(string workspaceName)
    {
        VersionControlServer sourceControl = (VersionControlServer)TfsServer.GetService(typeof(VersionControlServer));

        var items = sourceControl.GetItems(workspaceName, VersionSpec.Latest, RecursionType.Full)
                                 .Items
                                 .Where(x => x.ItemType == ItemType.File)
                                 .ToList();

        for (int x = 0; x < items.Count; x++)
            items[x].DownloadFile();
Run Code Online (Sandbox Code Playgroud)

会发生什么事情,每次我运行这个应用程序(在多台机器上),它都会停止运行items[x].DownloadFile().TFS中的所有文件都没有锁定,一切都很好.尝试使用该Workspace.Get()方法会产生同样的结果.

如果我点击暂停,x将是一个特定值,但我无法访问items集合,因为当我这样做时,我得到"无法计算表达式,因为当前线程处于休眠状态,等待或加入".当我评估调用堆栈时,我得到:

[In a sleep, wait, or join]
[External Code]
GetWorkspaceFiles(string workspaceName) Line 55
Run Code Online (Sandbox Code Playgroud)

我不知道该做些什么.每当我暂停应用程序时,x它总是处于相同的值(它停止的值对于每个运行的应用程序都是不同的).

有人有主意吗?


编辑:添加诊断逻辑后(基于格兰特答案中的链接)我比以往更加困惑.

我传递给这个方法的工作区是$/QA/Automated Test Scripts/Regression or System Test Scripts/RDE or Condo(通过调试器验证).

但是,当我查看tfs日志时,它看起来正在下载我正在运行的代码文件,因为它说:

02/10/2011 12:26:58 (pid 5808, tid 5968, 42180 ms) Recording OperationStatus.Getting for …
Run Code Online (Sandbox Code Playgroud)

c# tfs tfs-sdk tfs2010

5
推荐指数
1
解决办法
6190
查看次数

TFS API-更新工作项字段

是否可以使用TFS API更新工作项的字段?

这句话:

WorkItemStore.GetWorkItem(Convert.ToInt32(current.WorkItemId)).State = rcbState.SelectedValue;
Run Code Online (Sandbox Code Playgroud)

c# tfs tfs-sdk tfs2010

5
推荐指数
1
解决办法
6064
查看次数

以编程方式连接到TFSPreview

我正在尝试从C#应用程序连接到TFS Preview.

目前,我一直在试图进行身份验证.我添加了对TFS 2010 DLL的引用(我相信这些将使我能够连接,如果我错了请纠正我!)我的测试用例就像.我尝试连接的URL在表单中https://MYSERVERNAME.tfspreview.com/DefaultCollection

var teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(workPath, new UICredentialsProvider());
teamProjectCollection.EnsureAuthenticated();
Run Code Online (Sandbox Code Playgroud)

这失败,出现以下异常.

服务器https://MYSERVER.tfspreview.com/ $/defaultcollection 无法使用Team Foundation服务.技术信息(针对管理员):TF400813:资源不可用于匿名访问.需要客户端验证.

我原本希望UICredentialsProvider在工厂方法中创建团队项目集合,并使用它来提供身份验证.TFS预览服务使用Windows Live身份验证,但我希望能够涵盖这一点.

正确方向的指针非常感谢!

tfs tfs-sdk azure-devops

5
推荐指数
1
解决办法
2825
查看次数

TFS API TestManagementService始终返回null

我正在尝试使用TFS API获取测试计划.

TfsTeamProjectCollection tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://xxxxxxx:8080/tfs/DefaultCollection"));

var service = (ITestManagementService)tfs.GetService(typeof(ITestManagementService));
Run Code Online (Sandbox Code Playgroud)

变量"service"始终返回null.

你知道吗,为什么?

tfs tfs-sdk tfs2012

5
推荐指数
1
解决办法
1500
查看次数

TFS 2012 API以编程方式设置TeamSettings

是否可以通过编程方式设置TeamSettings?

var teamConfig = _tfs.GetService<TeamSettingsConfigurationService>();
                var css = _tfs.GetService<ICommonStructureService4>();

                var configs = teamConfig.GetTeamConfigurationsForUser(new[] { _selectedTeamProject.Uri });
                var team = configs.Where(c => c.TeamName == "Demo").FirstOrDefault() as TeamConfiguration;
Run Code Online (Sandbox Code Playgroud)

上面的代码为我提供了团队演示的团队配置.查看TeamSettings,它包含属性BacklogIterationPath,CurrentIterationPath,IterationPaths.如何以编程方式设置这些?

在此输入图像描述

c# tfs tfs-sdk

5
推荐指数
1
解决办法
3465
查看次数

从 WebService 连接到 Visual Studio Team Services

我如何向 提供凭据TfsTeamProjectCollectionFactory.GetTeamProjectCollection
我正在尝试开发自己的 WCF 服务,我将向 TFS 发出请求,
我需要此 WCF 服务,因为我想从移动设备管理我的 TFS 文件,但我无法使用 Microsoft.TeamFoundation.* dll

我一直在尝试这种方式

Uri tpcAddress= new Uri("https://myserver.visualstudio.com/DefaultCollection");
TfsConnection tfsc = new TfsConfigurationServer(tpcAddress, 
        new NetworkCredential("mail@example.com", "password"));
TfsWebClient wc = new TfsWebClient(tfsc);
tfsc.Connect(ConnectOptions.IncludeServices);
Run Code Online (Sandbox Code Playgroud)

第二次尝试使用从 ICredentialsProvider 派生的自定义类

ICredentialsProvider prov = new myCredentials();
var tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tpcAddress, prov);
tpc.EnsureAuthenticated();
tpc.Authenticate();

public class myCredentials : ICredentialsProvider
{
    public ICredentials GetCredentials(Uri uri, ICredentials failedCredentials)
    {
        return new NetworkCredential("mail@example.com", "password");
    }
    public void NotifyCredentialsAuthenticated(Uri uri)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

但它只在我的机器上工作,因为我登录了 tfs.

c# web-services tfs-sdk azure-devops

5
推荐指数
1
解决办法
2万
查看次数

无法从程序集"Microsoft.TeamFoundation.Client"加载"Microsoft.TeamFoundation.Client.BasicAuthCredential"类型

我有一个MVC应用程序从托管TFS中提取数据,当我部署它时,我收到此错误

Could not load type 'Microsoft.TeamFoundation.Client.BasicAuthCredential' from assembly 'Microsoft.TeamFoundation.Client, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
Run Code Online (Sandbox Code Playgroud)

但是,我在项目中引用了Microsoft.TeamFoundation.Client,并且dll在服务器上.

为什么它无法从dll加载Client.BasicAuthCredential,我将如何修复它?

c# tfs tfs-sdk tfs2012

5
推荐指数
1
解决办法
2508
查看次数

从TFS获取当前迭代路径

我正在尝试获取团队TFS项目的当前迭代路径.我试图这样做的方法是使用http://blog.johnsworkshop.net/tfs11-api-reading-the-team-configuration-iterations-and-areas/上的博客.我首先从以下代码获取团队配置:

        TfsTeamProjectCollection tpc = TFSConncetion(@"http://tfs/url");
        var configSvc = tpc.GetService<TeamSettingsConfigurationService>();
        var configs = configSvc.GetTeamConfigurationsForUser(projectUri);
Run Code Online (Sandbox Code Playgroud)

这个问题是我的配置总是空的,即使我是团队成员.我很肯定我的项目URI也是正确的.在此之后,我将获得团队设置并使用它来显示当前的迭代路径.

TeamSettings ts = config.TeamSettings;
Console.WriteLine(ts.CurrentIterationPath);
Run Code Online (Sandbox Code Playgroud)

即使这不起作用,我仍然可以从团队设置中查询迭代日期,以获得在今天之前有一个开始日期并在今天之后完成日期的一次迭代.主要的问题是,当我尝试使用我的项目URI获取团队配置时,我无法让我的TeamSettingsConfigurationService返回任何空值.

.net c# tfs tfs-sdk tfs2013

5
推荐指数
1
解决办法
6040
查看次数

Azure Devops - 按代理池 ID 获取版本定义

我正在尝试使用 .NET 客户端库查找配置为使用特定代理池的所有版本和版本。

假设agentPoolId,我可以得到所有这样的构建定义:

// _connection is of type VssConnection
using (var buildClient = _connection.GetClient<BuildHttpClient>())
{
    List<BuildDefinitionReference> allBuilds = await buildClient.GetDefinitionsAsync(projectName, top: 1000, queryOrder: DefinitionQueryOrder.DefinitionNameAscending);
    List<BuildDefinitionReference> builds = allBuilds.Where(x => HasAgentPoolId(x, agentPoolId)).ToList();
}

private bool HasAgentPoolId(BuildDefinitionReference buildDefinition, int agentPoolId)
{
    TaskAgentPoolReference pool = buildDefinition?.Queue?.Pool;

    if (pool == null)
    {
        return false;
    }

    return pool.Id.Equals(agentPoolId);
}
Run Code Online (Sandbox Code Playgroud)

但是我找不到一种方法来查找具有一个或多个环境配置为使用特定代理的发布定义。有什么建议吗?

.net c# tfs-sdk azure-devops

5
推荐指数
1
解决办法
989
查看次数

标签 统计

tfs-sdk ×10

c# ×8

tfs ×8

azure-devops ×3

.net ×2

tfs2010 ×2

tfs2012 ×2

tfs2013 ×1

web-services ×1