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

问题描述

在写一个程序需要调用SharpZipLib来实现文件的压缩和解压缩功能..调用倒是没有问题..我是通过添加了对SharpZipLib.dll的引用以后,在用using来调namespace,然后就能用dll里面的类了。这样操作的话,编译后vs会把dll也同时放到输出目录里面,每次运行编译的可执行文件时都需要保证同一目录下有相应的dll文件。想问下各位高人们。。有没有办法让vs编译生成单一的可执行文件呢。。就是把我调用的dll也一起打包到可执行文件里面。。?我试过把dll文件加入工程~~然后选嵌入资源方式~~但是这样的话,还是需要手动添加引用,并且结果是虽然编译生成的exe大了不少。。。但是却依然需要同目录下有一个dll存在才能正常运行。先谢谢各位了~~~呵呵

解决方案

解决方案二:
把dll文件加入工程,手动添加引用到bin文件夹。
解决方案三:
你既然引用了SharpZipLib.dll这个文件并调用了其中的方法,那么在目标计算机上就一定要有SharpZipLib.dll这个文件才能正常执行。有个取巧的办法,把SharpZipLib.dll作为资源编译到exe中,,每次运行的时候,先在一个指定目录(比方说系统的零时目录)生成这个文件程序里不要使用引用的方式加载SharpZipLib.dll,而是使用后期绑定。程序退出后再把生成的SharpZipLib.dll删掉。这样可以达到你想要的效果。
解决方案四:
ojekleen~~我把dll加入工程了..也手动添加了引用..但是编译生成的可执行文件还是需要dll文件在同一目录下才能运行,我的想法是编译生成一个包括dll在内的单一可执行文件。Dionix,谢谢..这个想法不错..不过我刚接触c#,所以还有两个问题。一是当我把dll作为资源编译到exe以后..运行的时候该怎么来生成这个文件呢..二是.如果不使用添加引用的方法加载dll的话..那又该怎么使用dll里面的类呢,谢谢谢谢大家
解决方案五:
你可以使用ResourceManager对象把内嵌的dll以自己流的方式读取,然后写文件。至于后期绑定,你可以使用Assembly.LoadFile加载类库,然后使用CreateInstance方法创建类的实例。
解决方案六:
我做了一次试验,这样似乎不大可能,但搂住的这想法挺不错的。作为内嵌资源是可以的,但编译时出错不易解决。
解决方案七:
等会儿去试试看吧。。谢谢大家

时间: 2024-09-17 07:17:21

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

VS2012 程序打包部署图文详解_C#教程

程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的是没有了打包工具.不知道出于什么原因微软没有将打包工具集成在开发环境中,但是我知道总会有解决办法的.     经过翻阅资料发现,VS2012虽然没有集成打包工具,但它为我们提供了下载的端口,需要我们手动安装一个插件InstallShield.网上有很多第三方的打包工具,但为什么偏要使用微软提供的呢?因为最原始的也是最高级的,万变不离其宗. 一..NET程序部署机制     上篇博客稍微总结了下.NET程序的编译机制,下面了

java-调用 getStringArray 后 android 程序崩溃

问题描述 调用 getStringArray 后 android 程序崩溃 程序出现了下面的错误,在 emulator中奔溃了.现在还不确定什么问题. Logcat: E/AndroidRuntime( 1928): FATAL EXCEPTION: main E/AndroidRuntime( 1928): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.packtpub.kitchendroid/c

ASP调用DLL通过WINSCK向服务器程序发送信息

问题描述 自己用VB写了个DLL,通过调用DLL向服务器发送了信息在本地测试的时候一切正常,当我把ASP程序放到服务器上却无法发送信息到服务器显示错误'800a01ad'ActiveX部件不能创建对象于是百度了下,可是按照百度的资料依然无效!于是自己又写了个发送信息的应用程序放到服务器上向WINSCK服务器端发送信息,结果一切正常!于是就怀疑是不是IIS的问题,查看本地IIS,将本地IIS设置了一个GUEST组,本地照样能发送信息给WINSCK服务器端本地是WINXP的服务器是WIN2003的

C# 程序打包后在其他电脑上zedgraph不能出曲线,在自己电脑上可以正常运行,如何解决?

问题描述 我的C#窗体应用程序打包后,在自己电脑上安装,zedgraph可以正常运行,正常出曲线,但在其他电脑上安装打包后的程序,zedgraph不能画出曲线,只有横纵坐标.有没有大神知道该如何解决? 解决方案 解决方案二:看看它引用了几个组件,是否都部署好了解决方案三:zedgraph的dll文件打包进去了吗?路径更改了吗?解决方案四:引用1楼rocmemory的回复: 看看它引用了几个组件,是否都部署好了 我的应用程序文件夹中已经已用了ZedGraph.dll,还缺什么组件么?解决方案五:引

C#程序实现动态调用DLL的研究

原文:C#程序实现动态调用DLL的研究 C#程序实现动态调用DLL的研究 摘  要:在<csdn开发高手>2004年第03期中的<化功大法--将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资源中释放出来,通过静态加载延迟实现DLL函数的动态加载,程序退出后实现临时文件的自动删除,从而为解决"DLL Hell"提供了一种解决方案.这是一个很好的设计思想,而且该作者也用C++实现了,在Internet上也

VB.NET,程序调试时正常,运行成功。可是程序打包后再运行时发生异常,请问怎么回事呢?

问题描述 报错信息如下:有关调用实时(JIT)调试而不是此对话框的详细信息,请参见此消息的结尾.**************异常文本**************System.NullReferenceException:未将对象引用设置到对象的实例.在GasManpowerMeasurePoint.MainForm.GetConfig()在GasManpowerMeasurePoint.MainForm.Data_refresh()在GasManpowerMeasurePoint.MainFor

dll-在 v2010中引用某个Dll后 所有.net程序无法运行

问题描述 在 v2010中引用某个Dll后 所有.net程序无法运行 重装的系统及vs2010. 一切正常. 在引用某个从网上下载的mysql.data.dll后,所有的.net程序都无法运行,就像没有安装framework一样. 但用IIS加载.net网页没问题. 运行不了后尝试重装过vs2010,所有framework运行库,重注册dll,都没用. 请问不重装系统怎么破? 解决方案 估计引用dll和你的系统崩溃之间只是巧合.你的系统被流氓软件破坏了. 不重装系统要想解决除非你有足够多的钱和时

r语言-在C# 程序里 调用R语言 调用完R语言后C#程序也跟着结束了,怎么让他不跟着结束呢?

问题描述 在C# 程序里 调用R语言 调用完R语言后C#程序也跟着结束了,怎么让他不跟着结束呢? 我程序里调用R语言的代码是这样的 REngine.SetEnvironmentVariables(); REngine engine = REngine.GetInstance(); engine.Evaluate(R_cmd); engine.Evaluate("q()"); engine.Dispose(); 这样有什么问题吗? 解决方案 你C#怎么写的?控制台程序可以加上一个Cons

java web-在javaWeb程序中通过jacob调用dll出现Can&amp;amp;#39;t co-create object

问题描述 在javaWeb程序中通过jacob调用dll出现Can't co-create object 公司的web程序中需要调用一个C++开发的DLL动态库文件,在使用jacob过程中在出现以下为题: 首先在开发前使用mian方法测试调用dll可以正常实现功能需求,但将代码放在web程序中出现Can't co-create object错误.求大神解救 解决方案 Account requires an assignment to a CO objectCan't create handler