2012-08-24 152 views
5

我们有一个引用类库项目(项目A)的visual studio软件包(VS Package)。项目A又引用另一个类库项目(项目B)。VSIX软件包不包含引用的项目依赖关系

所以依存结构是这样的:VS包装>项目A>项目B

相同的解决方案内部存在的所有项目和依赖已设置为正确的项目引用。

如果我在Visual Studio中构建包并在bin/Debug文件夹中查找,那么所有必要的程序集都包含在项目B中。但是,在部署包时,只有项目A的组件存在,项目B缺失。如何让Visual Studio在项目包中包含项目B的间接依赖关系?

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

但是我发现情况根本就不是这样。

我的问题与this one非常相似,只是我在主项目组件而不是定位卫星组件方面遇到了问题。在这篇文章中的答案对我来说不起作用,因为它似乎只适用于卫星程序集。

是否还有一些其他输出组可以指定将包引导为包含间接依赖关系?

感谢您的期待。

+0

我无法瑞普这一点。您是否确定VSPackage - > ProjectA和ProjectA - > ProjectB存在源级别依赖关系(即,ProjectA中的类型使用ProjectB中的类型)? –

+0

@AaronMarten感谢您的回复。是的,代码中存在源代码级别的依赖关系。删除任何一个项目引用会导致大量的构建错误,其中不能再找到所引用的类。我已经创建了一个简单的解决方案,展示了我的问题,它可以下载[这里](http://www.gogofile.com/Default.aspx?p=sc&ID=634817287005530000_4331) – Martyn

回答

3

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

+0

是的,这是明显的解决方案,是我已经做了什么来在短期内实现这一目标。但是,我想深入了解这一点,并理解为什么它不应该如此。您是否使用我上传的示例解决方案进行测试? – Martyn

1

我有一个类似的问题:我的VS包装项目中引用另一个VS包项目(〜项目A),这反过来又引用包含我们的扩展的肉一堆其他项目(〜项目B) 。

通过这个答案的启发:VSIX package doesn't include localized resources of referenced assembly,我说“BuiltProjectOutputGroup;BuiltProjectOutputGroupDependencies;GetCopyToOutputDirectoryItems;SatelliteDllsProjectOutputGroup”到参考的Output Groups Included in VSIX财产VS包项目A

这有一个效果,即删除...\Debug\文件夹中的所有依赖项DLL,我的VS Project,但它们仍未包含在VSIX中。

最后我去了,并添加了BuiltProjectOutputGroup;BuiltProjectOutputGroupDependencies;GetCopyToOutputDirectoryItems;SatelliteDllsProjectOutputGroup标志的所有引用从我项目A每个我项目烧烤的 - 然后他们都得到了包含在VSIX。

(顺便说一句这是与Visual Studio 2013,但似乎并未有太大变化,因为2010)

相关问题