【问题标题】:VSIX Package doesn't include referenced project's dependenciesVSIX 包不包含引用项目的依赖项
【发布时间】:2014-06-17 15:08:42
【问题描述】:

我们有一个引用类库项目(项目 A)的 Visual Studio 包(VS 包)。项目 A 又引用另一个类库项目(项目 B)。

所以依赖结构是这样的:VS Package > Project A > Project B

所有项目都存在于同一个解决方案中,并且依赖项已设置为正确的项目引用。

如果我在 Visual Studio 中构建包并查看 bin/Debug 文件夹,所有必要的程序集都在那里,包括项目 B。但是,在部署包时,只有项目 A 的程序集存在,而项目 B 的程序集丢失。如何告诉visual studio在包中包含Project B的间接依赖?

This MSDN 文档建议“默认情况下,在多项目解决方案中,如果输出到 VSIX 包的项目包含对同一解决方案中另一个项目的引用,则它包含该项目的依赖项。”

但我发现情况并非如此。

我的问题与this one 非常相似,只是我遇到了主要项目程序集而不是本地化附属程序集的问题。其他帖子中的答案对我不起作用,因为它似乎只适用于附属程序集。

我可以指定其他一些输出组来指示包也包含间接依赖项吗?

感谢收看。

【问题讨论】:

  • 我无法重现这个。您确定 VSPackage -> ProjectA 和 ProjectA -> ProjectB 存在源级依赖关系(即 ProjectA 中的类型使用 ProjectB 中的类型)?
  • @AaronMarten 感谢您的回复。是的,代码中存在源级别的依赖关系。删除任何一个项目引用都会导致大量构建错误,无法再找到引用的类。我创建了一个简单的解决方案来展示我的问题,可以下载HERE

标签: visual-studio-2010 vsx vsix vspackage


【解决方案1】:

在这种特殊情况下,最简单的做法是从 VSPackage 项目中引用项目 B,并将“引用输出程序集”属性设置为 False,以避免引入编译时依赖项。

【讨论】:

  • 是的,这是显而易见的解决方案,也是我为使其在短期内发挥作用所做的工作。但是,我想深入了解并理解为什么它不能正常工作。您是否使用我上传的示例解决方案进行了测试?
【解决方案2】:

我遇到了类似的问题:我的 VS 包 项目引用了另一个 VS 包项目(~Project A),该项目又引用了一堆其他项目(~Project B) 包含我们扩展的内容。

受这个答案的启发:VSIX package doesn't include localized resources of referenced assembly,我将“BuiltProjectOutputGroup;BuiltProjectOutputGroupDependencies;GetCopyToOutputDirectoryItems;SatelliteDllsProjectOutputGroup”添加到 VS 包Project A 的引用的 Output Groups Included in VSIX 属性中。

这对我的 VS 项目 删除了 ...\Debug\ 文件夹中的所有依赖 DLL,但它们仍然没有包含在 VSIX 中。

最后,我将 BuiltProjectOutputGroup;BuiltProjectOutputGroupDependencies;GetCopyToOutputDirectoryItems;SatelliteDllsProjectOutputGroup 标志添加到我的 Project A 到我的每个 Project Bs 的所有引用中 - 然后它们都包含在 VSIX 中.

(顺便说一句,这与 Visual Studio 2013 一起使用,但自 2010 年以来似乎没有太大变化)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-02
    • 2014-04-04
    • 2021-09-08
    • 2019-12-18
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多