Tag: tfs2010

TfsConfigurationServer.GetService ()始终返回null

我正在尝试使用TFS SDK连接到TFS 2010,但无法获得VersionControlServer服务。 var servers = RegisteredTfsConnections.GetConfigurationServers(); // ok 然后 var tfs = new TfsConfigurationServer(servers.First().Uri, CredentialCache.DefaultNetworkCredentials); // or var tfs = new TfsConfigurationServer(servers.First()); 两者总是返回null: var vc = (VersionControlServer)tfs.GetService(); // null! 我该怎么办?

获取VS Package项目中的dte2或​​TeamFoundationServerExt对象?

我正在开发Visual Studio Package项目。 该项目需要连接到我们的TFS。 要读取当前连接,我需要TeamFoundationServerExt对象,我应该能够从dte2对象获取该对象。 现在我发现了数百个示例,其中大多数都使用了一个“_application”变量,它似乎自动填充,但当然不适用于“Visual Studio Package”项目类型。 如何获取当前运行的VS2010的TeamFoundationServerExt对象?

如何以编程方式从C#代码构建我的解决方案文件?

我有一个包含许多项目的大型解决方案,其中一个是安装项目。 还有许多当前版本存储在单独的分支中。 我有一个以前在.NET 2中工作的构建工具,但自从我们升级到.NET 4以来一直没有用。 在内部,构建工具的新.NET 4版本使用Microsoft.TeamFoundation.Client.RegisteredTfsConnections.GetProjectCollections()和versionControlServer.GetAllTeamProjects(false)从我的TFS源控制服务器获取TeamProject的集合。 然后,我在UI中以可视方式显示它们,当用户单击特定解决方案版本时,应用程序调用以下内容以获取该解决方案版本的最新信息: workspace.Get(new string[] { serverPath }, VersionSpec.Latest, RecursionType.Full, GetOptions.GetAll); 用于构建解决方案文件的应用程序,包括安装项目。 在此阶段,安装项目将创建一个可以安装应用程序的MSI。 这是我遇到问题的最后一步。 我需要能够以编程方式构建用户使用C#代码选择的解决方案。 这个工作的.NET 2代码如下: Process process = new Process(); ProcessStartInfo processStartInfo = process.StartInfo; processStartInfo.FileName = processName; processStartInfo.Arguments = string.Format(” \”{0}\” /BUILD \”Release|Any CPU\””, solutionPath); processStartInfo.WorkingDirectory = processDirectory; process.Start(); 运行此命令时没有错误,但它不再启动Visual Studio并构建代码。 很明显,这是一个很难做到最初的方法,但我找不到使用TFS类的“正确”方式。 我也尝试直接运行MSBuild.exe(类似于上面的例子),这确实构建了解决方案,但由于某种原因没有构建产生MSI的安装项目。 请注意,我不使用任何手动创建的构建文件。 不幸的是,很难找到Microsoft.TeamFoundation命名空间的有用文档! 我希望这里有人利用这些课程,并指导我解决这个问题。 如果可能的话,我需要使用.NET类(例如,不是Process.Start),因为我真的需要知道构建何时完成。 但是,如果这个问题太多,我可以为此设置一个FileSystemWatcher对象。

TFS2010:如何将WorkItem链接到ChangeSet

我想以编程方式将WorkItems链接到Changesets。 目前我已经从我的c#代码创建工作项并将它们保存到TFS。 代码如下: WorkItem item = new WorkItem(project.WorkItemTypes[“CustomItem”]); item.Fields[“CustomField1”].Value = someValue; item.Fields[“CustomField2”].Value = someValue; item.Fields[“CustomField3”].Value = someValue; item.Validate(); item.Save(); 这部分代码工作正常。 现在我想将新创建的工作项与现有的变更集相关联。 我使用以下方法获取变更集: VersionControlServer service = collection.GetService(); Changeset changeset = service.GetChangeset(123123, true, true); 但是,我只能遍历现有的工作项。 我无法为此更改集添加新工作项。 有谁知道如何实现这一目标?

TFS客户端C#API – 获取项目的所有变更集

VS 2010的Microsoft TFS客户端: http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.versioncontrol.client.item(v=vs.100).aspx 我(即我的代码)有一个Changeset。 我迭代到一个特定的变化。 我在变化中有一个项目。 现在,我希望获得对该项目进行更改的所有变更集。 有人可以告诉我最好的方法吗? 我可以迭代相关分支的所有变更集,这将是非常低效的。

TFS构建测试结果

我们正在开发Visual Studio 2010和TFS 2010.我们有自己的BuildTemplate,它是默认模板的副本,但有一些附加内容,如(创建目录…),但主要的一点是,所有这些都在DefaultTemplate中 – 离开了。 我们已经进行了“单元”测试,这些测试也在起作用。 我制作了运行所有unit testing的Build定义。 已阅读此处的信息 – http://geekswithblogs.net/jakob/archive/2009/06/03/tfs-team-build-2010-running-unit-tests.aspx以及其他许多地方。 构建运行非常完美,唯一不起作用的是构建摘要 – 测试结果,代码覆盖率,如上面的链接。 因此,当我在构建应用程序时观察活动日志时,它显示: Run MSTest for Test Assemblies c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe /nologo /usestderr /testSettings:”C:\Builds\7\**Project**\**BuildName**\Sources\**ProgramName**\**ProgNameAndVersion**\Solutions\**SolutionName**\localtestrunDebug.testrunconfig” /searchpathroot:”C:\Builds\7\**Project**\**BuildName**\Binaries” /resultsfileroot:”C:\Builds\7\**Project**\**BuildName**\TestResults” /testcontainer:”C:\Builds\7\**Project**\**BuildName**\Binaries\**TestProjectName**.dll” /publish:”http://***:8080/tfs/MSLN” /publishbuild:”***:///Build/Build/14599″ /teamproject:”**ProjectName**” /platform:”x86″ /flavor:”**Release**” Loading C:\Builds\7\**Project**\**BuildName**\Sources\**ProgramName**\**ProgNameAndVersion**\Solutions\**SolutionName**\localtestrunDebug.testrunconfig… Loading C:\Builds\7\**Project**\**BuildName**\Binaries\**TestProjectName**.dll… Starting execution… Results Top Level Tests ——- ————— Failed ***.Test.*** Failed ***.Test.*** Failed […]

TFS 2010:如何使用标签在两个版本的应用程序之间生成更改日志(即工作项列表)?

我正在寻找一种方法来自动生成我的应用程序的两个版本之间的更改日志(实际上是工作项列表)。 我有两个版本的应用程序,v1和v2,每个版本都由TFS 2010(LABEL1和LABEL2)中的标签标识,我在构建应用程序的设置之前手动创建了该标签。 我有一个分支系统,这意味着我有一个主干,大多数错误是固定的,并且一个分支,其中补丁主要使用来自主干的合并(但是在分支上也有一些修复只与主干无关) 。 我的应用程序的两个版本(v1和v2)是分支的版本。 我希望TFS 2010能够返回这两个标签之间已修复的错误列表(即,类型= Bug的工作项列表已关闭并validation)。 我尝试使用TFS 2010的Web UI或使用Visual Studio实现此目的,但我没有找到任何方法。 然后我尝试使用以下命令行向tf.exe询问历史记录: tf history /server:http://server_url/collection_name “$/project_path” /version:LLABEL1~LLABEL2 /recursive /noprompt /format:brief 其中LABEL1是与应用程序的v1的源代码关联的标签,LABEL2是与应用程序的v2的源代码关联的标签。 它实际上以两种方式失败: – 命令行只返回变更集列表,而不是关联的已关闭工作项列表 – 变更集列表仅包含我在分支本身上应用的变更集,而不是我也应用的变更集然后将主干合并到分支机构。 设置与否“/ slotmode”参数不会改变任何内容。 在那里,我尝试编写一段C#代码来检索工作项列表(而不是变更集列表): var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(“http://server_url/collection_name”)); VersionControlServer controlServer = tfs.GetService(); VersionControlServer vcs = tfs.GetService(); VersionSpec sFrom = VersionSpec.ParseSingleSpec(“LLABEL1”, null); VersionSpec sTo = VersionSpec.ParseSingleSpec(“LLABEL2”, null); var […]

TFS 2010:获取变更集ID列表

我需要创建两个方法如下: 检索TFS中的所有更改集。 检索比指定变更集更新的所有变更集。 我做了一些谷歌搜索,发现了一些链接,并设法提出了一些代码。 我似乎无法找出调用方法来获取变更集项的完整列表。 我已经把一些东西混在一起得到这个,但是想知道是否有人可以帮助我: TfsTeamProjectCollection projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(“http://mydomain.com:8080/tfs”)); VersionControlServer versionControl = projectCollection.GetService(); int latestId = versionControl.GetLatestChangesetId(); List changesetList = new List(); for (int i = 1; i < latestId; i++) { try { Changeset cs = versionControl.GetChangeset(i); if (cs != null) { changesetList.Add(cs); } } catch (ResourceAccessException) { } } 获取某些Id的变更集会抛出“ResourceAccessException”exception,这就是添加处理程序的原因。 关于如何以“正确”的方式做到这一点的任何想法? […]

如何删除TFS 2010中的特定ChangeSet?

如何删除tfs2010中的特定变更集? 我有变更集版本号545,544,543,542。 现在,我希望仅在tfs中删除特定的变更集543?

如何使用Team Foundation Server API创建测试运行和结果?

我找到了几个关于使用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]; } 我不确定这是否是启动新运行的正确方法,我不确定如何记录测试的每个操作的结果。