Ren*_*ogt 15 c# tfs visual-studio visual-studio-2017
不久之前,我开发了一个自定义的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"
Run Code Online (Sandbox Code Playgroud)
和
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0_Config\TeamFoundation\SourceControl\Checkin Policies]
"MyCheckInPolicy"="C:\\Program Files\\My\\MyCheckInPolicy.dll"
Run Code Online (Sandbox Code Playgroud)
因此我为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"
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这不起作用:
MyCheckInPolicy 不会出现1mycheckinpolicy)"尚未注册".当然,我在注册表更改后重新启动了IDE,但即使重新启动我的机器也无济于事.
到目前为止我发现的信息似乎表明,登记政策现在必须是扩展(vsix)的一部分,我不想相信.
我想这个问题来自一些在程序集加载到IDE时无法解析的引用.
该MyCheckInPolicy项目引用Microsoft.TeamFoundation.VersionControl.Client.dllVS2015文件夹中的v14.0 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer.
我试图从VS2017文件夹中引用相应的dll,但随后程序集在两个 IDE 中都不起作用.
我也尝试使用Nuget包"Microsoft.TeamFoundation.VersionControl.All"v12.0.30723.2,并将输出目录中的所有文件(似乎包含包的所有程序集)部署到注册表项中提到的位置.这具有相同的结果:无法在VS2015和VS2017中加载策略.
我们正在使用TFS 12.0.30723.0.
1所以看起来VS2017甚至没有尝试加载程序集而不关心注册表项?
Per*_* P. 18
在Visual Studio 2017中,对可扩展性进行了重大更改.大部分注册表配置已移至"私有"注册表:
为了减少对注册表的影响,Visual Studio现在使用RegLoadAppKey函数将注册表项存储在%VsAppDataFolder%\ privateregistry.bin下的专用二进制文件中.只有极少数Visual Studio特定的密钥保留在系统注册表中.(链接)
通过将注册表项定义为vsix中.pkgdef文件的一部分,在安装时VS 2017将(我假设)将密钥写入私有注册表而不是实际的注册表,这是VS的早期版本中的情况.这将允许政策被拿起.
因此,以下是我在VS 2017中使用我们的策略的步骤:
.pkgdef使用以下内容将文件添加到VSIX项目(这是注册表项条目):
[$RootKey$\TeamFoundation\SourceControl\Checkin Policies]
"YourPolicy"="$PackageFolder$\YourPolicy.dll"
source.extension.vsixmanifest在VSIX项目中修改(使用GUI向导):
Microsoft.VisualStudio.Community [15.0,16.0)Microsoft.VisualStudio.IntegratedShell [15.0,16.0)Visual Studio core editor [15.0,16.0)这个 GitHub回购有助于拼凑所有东西.迁移到vsix时我发现了一些怪癖:
.settings文件中.| 归档时间: |
|
| 查看次数: |
3466 次 |
| 最近记录: |