visual-studio - tfs 2013 自定义签入策略不可见
问题描述
我正在尝试在 TFS 2013 中创建自定义签入策略。按照此示例,我在https://blog.devart.com/creating-tfs-custom-check-in-policy.html下面创建 WorkitemStateControlPolicy 类
namespace WIStateControlPolicy
{
[Serializable]
public sealed class WorkitemStateControlPolicy : PolicyBase
{
[NonSerialized]
private IPendingCheckin pendingCheckin;
public const string ClosedStatus = "System.Reason";
........
........
}
}
我构建了这个项目,创建了 WorkitemStateControl.dll。我正在使用的注册表项:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\14.0_Config\TeamFoundation\SourceControl\Checkin Policies]
"WorkitemStateControl"="c:\\Users\\me\\Desktop\\dll\\WorkitemStateControl.dll"
然后我检查了 Visual Studio 2015 添加签入策略,但新策略在列表中不可见
我也试过这个注册路径:
(HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\TeamFoundation\SourceControl\CheckinPolicies)
但问题没有改变。
我的问题是,为什么看不到新的签到政策?我应该更改 tfs 服务器上的任何内容吗?
解决方案
确实没有与 Team Foundation Server 版本一起使用的签入策略的概念。相反,这些是 Visual Studio 的插件。因此,您正在为恰好连接到 Team Foundation Server 的特定版本的 Visual Studio 构建插件。
因此,每个版本的 Visual Studio 都需要自己的程序集版本,根据正确版本的 .NET 和正确版本的 Team Foundation Server 客户端对象模型编译,该版本与 Team Explorer“扩展”附带的版本相匹配视觉工作室。
然后,将包含该策略的特定程序集的不同路径注册到您支持的 Visual Studio 版本的每个注册表树中。哦,别忘了注册 x86 和 x64 注册表树:)。
Windows Registry Editor Version 5.00
//v12
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0\TeamFoundation\SourceControl\Checkin Policies]
"JesseHouwing.CheckinPolicies"="C:\Program Files(x86)\\MyCompany\\Checkin Policies\\v12.0\\JesseHouwing.CheckinPolicies.dll"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\12.0\TeamFoundation\SourceControl\Checkin Policies]
"JesseHouwing.CheckinPolicies"="C:\Program Files(x86)\\MyCompany\\Checkin Policies\\v12.0\\JesseHouwing.CheckinPolicies.dll"
//v14
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\TeamFoundation\SourceControl\Checkin Policies]
"JesseHouwing.CheckinPolicies"="C:\Program Files(x86)\\MyCompany\\Checkin Policies\\v14.0\\JesseHouwing.CheckinPolicies.dll"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\14.0\TeamFoundation\SourceControl\Checkin Policies]
"JesseHouwing.CheckinPolicies"="C:\Program Files(x86)\\MyCompany\\Checkin Policies\\v14.0\\JesseHouwing.CheckinPolicies.dll"
etc...
VISUAL STUDIO PROJECT TYPE CPU .NET VERSION TFS OM VERSION VISUAL STUDIO VERSION
2017 Class Library AnyCPU 4.6 15.0.0.0 v15.0
2015 Class Library AnyCPU 4.6 14.0.0.0 v14.0
2013 Class Library AnyCPU 4.5 12.0.0.0 v12.0
2012 Class Library AnyCPU 4.0 11.0.0.0 v11.0
2010 Class Library AnyCPU 4.0 10.0.0.0 v10.0
2008 Class Library AnyCPU 3.0 9.0.0.0 v9.0
2005 Class Library AnyCPU 2.0 8.0.0.0 v8.0
还有一个针对多个 Visual Studio 版本的示例项目。
在这个项目中,我手动调整了项目文件以根据所选 Visual Studio 版本使用choose/when
构造动态引用客户端对象模型的版本:
<Choose>
<When Condition="'$(Configuration)' == 'VS2013'">
<ItemGroup>
<Reference Include="Microsoft.TeamFoundation.VersionControl.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.TeamFoundation.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.TeamFoundation, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
</ItemGroup>
</When>
<When Condition="'$(Configuration)' == 'VS2012'">
<ItemGroup>
<Reference Include="Microsoft.TeamFoundation.VersionControl.Client, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.TeamFoundation.Client, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.TeamFoundation, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
</ItemGroup>
</When>
<When Condition="'$(Configuration)' == 'VS2010'">
<ItemGroup>
<Reference Include="Microsoft.TeamFoundation.VersionControl.Client, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.TeamFoundation.Client, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.TeamFoundation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<Reference Include="Microsoft.TeamFoundation.VersionControl.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.TeamFoundation.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.TeamFoundation, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
</ItemGroup>
</Otherwise>
</Choose>
您可以使用类似的技巧为更高版本的 Team Explorer 引用不同的 NuGet 版本。自 2013 年以来,TFS 聚合器项目针对每个版本的客户端对象模型构建,我们动态包含一个目标文件来设置引用和 nuget 依赖项。
推荐阅读
- magnolia - Magnolia 5.7.9 模块配置
- git - 如何在共享主机上设置 Git 远程仓库
- javascript - 从天气 API 显示温度
- excel - VBA-每次单击同一行中的按钮时添加时间戳
- angular - 使用哈希、Azure Active Directory 重定向/回复 URL
- python - 如何在python中有效地创建重叠的半透明圆圈的图像
- python - 为什么 Charmap 只以字典形式抛出错误,而不是 JSON 形式?
- deep-learning - 如何使用torchvision在colab中下载数据集我收到此错误
- mysql - 无法使用 node.js 连接到 cpanel 的 phpmyadmin 数据库
- reactjs - 故事书:“JSON 中第 27 位的意外标记 r”