使用VSIX和PKGDEF在TFS2010上部署自定义策略

时间:2010-10-14 00:51:20

标签: tfs tfs2010 vsix

我正忙着尝试使用VSIX在TFS2010上安装自定义策略。

我的策略已经启动并且在我的开发PC上正常运行,我已经手动为注册表写了一个值,并且策略已经实施。

麻烦的是设置VSIX项目并部署到我们的其他开发机器。

我按照以下说明操作:

http://blogs.msdn.com/b/jimlamb/archive/2010/03/31/how-to-implement-package-and-deploy-custom-check-in-policy-for-tfs-2010.aspx

首选方法似乎是在VS 2010中使用新的VSIX项目类型,我在我的解决方案中添加了一个VSIX项目,但博客条目中的说明对于下一步该做什么非常模糊。我的理解是PKGDEF文件意味着您在部署时没有为注册表写入值,并且在启动Visual Studio时将PKGDEF文件的内容滚动到配置中。那没关系,但是你如何构建VSIX包呢?

我尝试将自定义策略项目作为VS Package类型添加到VSIX项目中,但是当我构建时出现错误:项目中不存在目标“PkgdefProjectOutputGroup”。

我尝试将dll,pkgdef文件添加为自定义内容类型等,但没有任何效果。

我更改了博客中的PKGDEF文件以匹配我自己的项目。

当我在开发机器上安装VSIX软件包时,我可以在Visual Studio中的Extensions Manager中看到加载项,但是当我在TFS中检查自定义策略时,我收到“未注册”错误。< / p>

我真的需要一步一步地设置VSIX项目来部署自定义策略,任何人都可以帮忙吗?

3 个答案:

答案 0 :(得分:6)

博客文章肯定缺少一步。我认为作者的意图是将pkgdef文件添加到VSIX项目(通过vsixmanifest编辑器)作为VS Package类型的内容。然后,从VSIX项目中向checkin策略项目添加项目引用(这将导致将签入策略DLL添加到您的VSIX中)。

作为旁注......当您选择“VS Package”作为内容类型然后指向项目时...它需要是一个合适的VS Package项目(而不仅仅是一个vanilla C#/ VB类库)。

答案 1 :(得分:1)

问题是程序集名称“ NArrange.CheckinPolicy.dll ”与Policies.pkgdef中的名称不匹配。要更正此问题,请确保您的Policies.pkgdef如下所示:

[$RootKey$\TeamFoundation\SourceControl\Checkin Policies]
"TeamFoundation.Samples.CheckinPolicies"="$PackageFolder$\NArrange.CheckinPolicy.dll"

此外,我可以通过将source.extension.vsixmanifest中的“Product Name”更改为NArrange.CheckinPolicy来避免进一步的混淆。这样,程序集将与VS Extensions中的产品名称匹配。

答案 2 :(得分:1)