5

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

我已经在我的开发 PC 上启动并运行并正常运行该策略,我已手动将一个值写入注册表,并且该策略已被强制执行。

麻烦在于设置一个 VSIX 项目并部署到我们的其他开发机器上。

我按照以下说明进行操作:

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

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

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

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

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

当我在开发机器上安装 VSIX 包时,我可以在 Visual Studio 的扩展管理器中看到加载项,但是当我在 TFS 中检查自定义策略时,我收到“未注册”错误。

我真的需要逐步设置 VSIX 项目来部署自定义策略,有人可以帮忙吗?

4

2 回答 2

6

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

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

于 2010-10-14T20:49:22.210 回答
1

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

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

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

于 2011-06-02T17:53:03.890 回答