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

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

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

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

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

先谢谢各位了~~~ 呵呵
...全文
95 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
等会儿去试试看吧。。谢谢大家

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧