关于调用DLL后的程序打包的问题

firen 2007-11-14 06:32:51
在写一个程序需要调用SharpZipLib来实现文件的压缩和解压缩功能..调用倒是没有问题.. 我是通过添加了对SharpZipLib.dll的引用以后,在用using来调namespace,然后就能用dll里面的类了。

这样操作的话,编译后vs会把dll也同时放到输出目录里面,每次运行编译的可执行文件时都需要保证同一目录下有相应的dll文件。

想问下各位高人们。。有没有办法让vs编译生成单一的可执行文件呢。。就是把我调用的dll也一起打包到可执行文件里面。。?

我试过把dll文件加入工程~~ 然后选嵌入资源方式~~ 但是这样的话,还是需要手动添加引用,并且结果是 虽然编译生成的exe大了不少。。。但是却依然需要同目录下有一个dll存在才能正常运行。

先谢谢各位了~~~ 呵呵
...全文
57 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zivsoft 2007-11-14
我做了一次试验,这样似乎不大可能,但搂住的这想法挺不错的。作为内嵌资源是可以的,但编译时出错不易解决。
  • 打赏
  • 举报
回复
Dionix 2007-11-14
你可以使用ResourceManager对象把内嵌的dll以自己流的方式读取,然后写文件。

至于后期绑定,你可以使用Assembly.LoadFile加载类库,然后使用CreateInstance方法创建类的实例。
  • 打赏
  • 举报
回复
firen 2007-11-14
ojekleen~~ 我把dll加入工程了..也手动添加了引用..但是编译生成的可执行文件还是需要dll文件在同一目录下才能运行,我的想法是编译生成一个包括dll在内的单一可执行文件。

Dionix,谢谢..这个想法不错.. 不过我刚接触c#,所以还有两个问题。 一是当我把dll作为资源编译到exe以后..运行的时候该怎么来生成这个文件呢..二是.如果不使用添加引用的方法加载dll的话..那又该怎么使用dll里面的类呢,谢谢

谢谢大家
  • 打赏
  • 举报
回复
Dionix 2007-11-14
你既然引用了SharpZipLib.dll这个文件并调用了其中的方法,那么在目标计算机上就一定要有SharpZipLib.dll这个文件才能正常执行。

有个取巧的办法,把SharpZipLib.dll作为资源编译到exe中,,每次运行的时候,先在一个指定目录(比方说系统的零时目录)生成这个文件

程序里不要使用引用的方式加载SharpZipLib.dll,而是使用后期绑定。

程序退出后再把生成的SharpZipLib.dll删掉。

这样可以达到你想要的效果。
  • 打赏
  • 举报
回复
ojekleen 2007-11-14
把dll文件加入工程,手动添加引用到bin 文件夹。
  • 打赏
  • 举报
回复
firen 2007-11-14
等会儿去试试看吧。。谢谢大家
  • 打赏
  • 举报
回复
相关推荐
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2007-11-14 06:32
社区公告

让您成为最强悍的C#开发者