6

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

所以依赖结构看起来像这样:VS Package > Project A > Project B

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

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

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

但是我发现事实并非如此。

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

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

感谢您的关注。

4

2 回答 2

3

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

于 2012-08-28T18:10:29.867 回答
1

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

受此答案的启发:VSIX package 不包括引用的程序集的本地化资源,我将 ' BuiltProjectOutputGroup;BuiltProjectOutputGroupDependencies;GetCopyToOutputDirectoryItems;SatelliteDllsProjectOutputGroup' 添加到从VS PackageProject AOutput Groups Included in VSIX的引用属性中。

这具有将我的VS Project...\Debug\文件夹中的所有依赖 DLL 删除的效果,但它们仍然没有包含在 VSIX 中。

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

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

于 2014-06-17T07:08:42.513 回答