我正在尝试修改自定义签入策略以对抗Visual Studio 2013。
起初,我试图在 2013 年的清单中添加一个新部分:
<VisualStudio Version="12.0">
<Edition>Ultimate</Edition>
<Edition>Premium</Edition>
<Edition>Pro</Edition>
</VisualStudio>
虽然这允许它安装,但它不允许策略运行(如果我转到 TFS 的 policies>>Add 部分,它不存在,并且策略会引发异常,指出策略未注册)。
经过多次搜索,我认为 Policies.pkgdef 可能存在问题 - VS2013 中的扩展管理器显示它已安装,但它在挂起的更改中未显示为已安装。但是我也看不出任何问题:
[$RootKey$TeamFoundationSourceControlCheckin Policies]
"VersionOneTFSPolicy"="$PackageFolder$VersionOneTFSPolicy.dll"
我已经在 2013 年打开并编译了它,并修复了任何参考问题,以便它能够正确编译,但它似乎仍然不喜欢使用它。
VS2013 管理自定义签入策略的方式是否与 2010/2012 不同?从我所看到的情况来看,它应该只适用于清单更改和重新编译。
编辑
因此,我设法通过在 11 升级到 12 并将项目升级到 .Net 4.5 来Microsoft.TeamFoundation.VersionControl.Client
的引用在 VS2013 上运行自定义策略。但是,这现在使自定义策略在VS2012上不可用(我也假设2010年,但我还没有测试过)。有没有办法从单个 VSIX 在 2010 年到 2013 年运行此内容?
在没有任何其他解决方案的情况下,我恢复了更新扩展并将其构建为新包的久经考验的方法。所以只需有一个 2012 版本和一个完全独立的 2013 版本。
在尝试解决这个问题,从我发现的所有内容来看,获得面向所有版本的扩展的唯一方法是实际创建 3 个单独的(2010、2012 和 2013)扩展,并使用 InstallShield 包安装它们,每个包都作为按顺序安装的子功能。
然后,在 VSIX 实际执行安装时,将分别对每个升级进行升级。
可以帮助您的链接包括:
针对 VS 2012 和 VS 2013 的单个扩展
如何在VS2012和VS2010中定位扩展