【发布时间】:2017-08-12 21:24:55
【问题描述】:
不久前,我开发了一个自定义 TFS 签入策略,该策略在 Visual Studio 2015 上运行良好。 现在我安装了 Visual Studio 2017 并希望以与之前使用 VS2015 相同的方式注册签入策略程序集。但这不起作用。 如何在 VS2017 中注册自定义签入策略程序集?
对于 VS2015,我有以下注册表项:
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\TeamFoundation\SourceControl\Checkin Policies]
"MyCheckInPolicy"="C:\\Program Files\\My\\MyCheckInPolicy.dll"
和
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0_Config\TeamFoundation\SourceControl\Checkin Policies]
"MyCheckInPolicy"="C:\\Program Files\\My\\MyCheckInPolicy.dll"
因此我为 VS2017 添加了这些键 (15.0):
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\15.0\TeamFoundation\SourceControl\Checkin Policies]
"MyCheckInPolicy"="C:\\Program Files\\My\\MyCheckInPolicy.dll"
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\15.0_Config\TeamFoundation\SourceControl\Checkin Policies]
"MyCheckInPolicy"="C:\\Program Files\\My\\MyCheckInPolicy.dll"
但不幸的是,这不起作用:
- 如果我打开 Team Project SourceControl 设置,请转到“签入策略”选项卡并尝试添加... 策略,
MyCheckInPolicy不出现 em>1 - 如果我已经打开使用此签入策略的团队项目并执行上述操作,我会收到一条错误消息,告诉我程序集 (
mycheckinpolicy)“尚未注册”。
当然我在修改注册表后重启了IDE,但是即使rebooting我的机器也没有帮助。
到目前为止,我发现的information似乎表明签入政策现在必须成为扩展程序 (vsix) 的一部分,我不想相信。
我猜这个问题来自一些在程序集加载到 IDE 时无法解决的引用。
MyCheckInPolicy 项目引用了 VS2015 文件夹 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer 中的 Microsoft.TeamFoundation.VersionControl.Client.dll v14.0。
我试图从 VS2017 文件夹中引用相应的 dll,但随后程序集在 both IDE 中不起作用。
我还尝试使用 Nuget 包“Microsoft.TeamFoundation.VersionControl.All”v12.0.30723.2,并将输出目录中的所有文件(似乎包含包的所有程序集)部署到中提到的位置注册表项。这具有相同的结果:在 VS2015 和 VS2017 中都无法加载策略。
我们正在使用 TFS 12.0.30723.0。
1所以看起来VS2017甚至没有尝试加载程序集,也不关心注册表项?
【问题讨论】:
标签: c# visual-studio tfs visual-studio-2017