我正忙着尝试使用VSIX在TFS2010上安装自定义策略。
我的策略已经启动并且在我的开发PC上正常运行,我已经手动为注册表写了一个值,并且策略已经实施。
麻烦的是设置VSIX项目并部署到我们的其他开发机器。
我按照以下说明操作:
首选方法似乎是在VS 2010中使用新的VSIX项目类型,我在我的解决方案中添加了一个VSIX项目,但博客条目中的说明对于下一步该做什么非常模糊。我的理解是PKGDEF文件意味着您在部署时没有为注册表写入值,并且在启动Visual Studio时将PKGDEF文件的内容滚动到配置中。那没关系,但是你如何构建VSIX包呢?
我尝试将自定义策略项目作为VS Package类型添加到VSIX项目中,但是当我构建时出现错误:项目中不存在目标“PkgdefProjectOutputGroup”。
我尝试将dll,pkgdef文件添加为自定义内容类型等,但没有任何效果。
我更改了博客中的PKGDEF文件以匹配我自己的项目。
当我在开发机器上安装VSIX软件包时,我可以在Visual Studio中的Extensions Manager中看到加载项,但是当我在TFS中检查自定义策略时,我收到“未注册”错误。< / p>
我真的需要一步一步地设置VSIX项目来部署自定义策略,任何人都可以帮忙吗?
答案 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)