我是.net的新手并且遇到了这个问题:我想为使用avi包装器here的应用程序创建安装程序。该库依赖于avifil32.dll,因为我在包含
的源代码中找到了它 [DllImport("avifil32.dll", PreserveSig=true)]
。
我在visual studio 2008中制作了安装项目,安装程序在某些机器上运行正常。但是,有一台机器无法工作,它在与.avi导出相关的部分完全中断,所以我认为原因与此外部依赖有关。 如果目标计算机上缺少此安装程序,我应该如何使安装程序包含此(或通常任何)外部数据?
答案 0 :(得分:1)
您是否可以右键单击设置项目中的主输出,然后右键单击“应用程序文件夹”,选择“添加程序集”并浏览到您的dll?
如果您然后右键单击程序集,则可能需要设置“注册”设置以在安装时注册dll。
以下是article可能有所帮助。
答案 1 :(得分:1)
感谢TooFat的建议。它帮助我意识到我之前关于缺少avifil32.dll的猜测是错误的。
我的问题的实际原因是我使用aviwrapper库将位图导出到avi和mpeg(我稍微修改了一下库以便能够在常规和xvid编解码器之间切换)。它在我的台式计算机和笔记本电脑上工作,因为我已经安装了xvid编解码器,但在具有干净Windows XP的虚拟机上它无法正常工作(缺少xvid编解码器)。 我通过查看日志文件意识到了这一点。实际发生的是我的方法首先尝试导出到.mpg然后在avi compress处接收异常(因为xvid)。之后它尝试导出到.avi但是之前的尝试搞砸了并导出到.avi会在文件打开时抛出异常(两个导出都使用相同的临时文件名,这就是它在文件打开时引发异常的原因)。
在我评论出.mpg导出后,一切正常,我不必包括上面提到的dll。
再次感谢您的回复。