1
5
在复制了相同的疑似msi缺陷之后,我还有更多的东西要添加。 1)当我向安装程序添加共享相同检测到依赖项的第二个项目输出时,它没有自动添加依赖项。我删除了两个项目输出,并按相反的顺序添加它们。添加的第二个项目输出从未添加检测到的依赖项。这排除了与项目有关的任何配置或代码问题以及如何添加引用。总是第二个失败。 2)在使用“手动添加检测到的程序集”解决方案后,我的团队实际上遇到了第二个问题。最初,我们从'\program files\xxx'中的位置添加了依赖项,但在64位计算机上遇到了构建问题,在该计算机上,相同的依赖项位于'\program files(x86)\xxx'文件夹中,即使vs在获取引用时足够智能来处理此问题。
|
2
3
我可以证明这对我们也是一个问题。我怀疑这是部署项目中的一个bug——它只在一个位置添加依赖的项目输出(也许它认为它是一个COM DLL?) 为丢失的dll手动添加主输出似乎是一个可行的解决方案。 |
3
0
我还没有使用Visual Studio 2008,但是在2005年,您必须验证项目中缺少的引用是否已将“复制本地”属性设置为true。 这将把丢失的文件复制到输出目录。 |
4
0
除了 赫托斯克 的响应,请验证Depedency是否在部署项目依赖项列表中,并且相关的dll是否标记为要包含。 |
5
0
您是否尝试在Reflector中查看您的dll,以查看它是否确实依赖于其他dll?如果可以看到您实际上没有使用引用的程序集,则VS足够智能,不会包含它。 除此之外,即使你“认为”你在使用它,vs可以优化你的使用-这是一个极限情况,但我已经看到它: 例如,如果您有一个“常量”程序集,其中包含:
vs将把字符串直接插入引用代码中。 除此之外,我建议删除并重新构建您的安装解决方案。 |
7
0
看看这个-也许这不能解释为什么是这样,但至少它提供了一些解决方法:) http://lo-sharpdevs.blogspot.com/2009/07/vs-2008-disappearing-dependencies.html |
8
0
我对Microsoft SMO对象的使用也有类似的问题。我有一个二进制组件(x.dll),它使用我自己制作的这些Microsoft SMO对象。编译x.dll之后,我使用x.dll(而不是代码)在另一个exe项目中引用它。附加到的安装程序项目检测到它需要Microsoft SMO对象,并检测到它们是计算机上我的SQL Server安装的本地对象。 使用SMO对象的组件x.dll通过保存在共享驱动器上的本地“externals”文件夹引用Microsoft SMO对象。所有模块都是参照这些模块编译的,但是我的install project with my exe project会检测到来自我的SQL Server安装的模块。 因此,我们有另一台机器,它具有带有SMO对象的“externals”文件夹,但是安装项目将不再从“detected dependencies”中找到SMO对象,因为它没有意识到SMO对象在externals模块中!我不确定它在哪里搜索检测到的依赖文件,但它不查看x.dll最初从何处获取这些文件,甚至可能是exe文件夹… |