在vb.net、c#等.net程序中把程序集dll打包到exe执行文件的方法
能够达到的效果,就是我程序生成后,就仅仅是一个Vxterm.exe可执行文件,把它拷出来就可以直接使用了,不需要安装,也不需要把附带的dll也要求带着。
以下是我在参考了网上的各种乱抄的代码后,自己整理并实现的vb.net代码,供参考
此方法打包的dll适用于:正常情况下,您需要在项目配置中进行dll程序集引用,并将dll随着您的主程序一起发布才能正常使用的情况。
使用此方法打包了dll后,程序发布时就不需要再带着一大堆dll了。
以下为vb.net代码
1、建立一个myDLL,也可以用过程或函数来代替
Class myDLL
Public Shared Sub LoadResourceDLL()
AddHandler AppDomain.CurrentDomain.AssemblyResolve, AddressOf CurrentDomain_AssemblyResolve
End Sub
Private Shared Function CurrentDomain_AssemblyResolve(sender As Object, args As ResolveEventArgs) As Assembly
Dim DllName As String
If args.Name.Contains(",") Then
DllName = args.Name.Substring(0, args.Name.IndexOf(","))
Else
DllName = args.Name.Replace(".dll", "")
End If
DllName = DllName.Replace(".", "_")
If DllName.EndsWith("_resources") Then Return Nothing
Dim rm As System.Resources.ResourceManager = My.Resources.ResourceManager
Dim bytes() As Byte = rm.GetObject(DllName)
Return System.Reflection.Assembly.Load(bytes)
End Function
End Class2、在sub main的第一行里加入调用代码
Public Sub Main() myDLL.LoadResourceDLL() ' MainFrm = New frmMain ' Application.Run(MainFrm) End Sub
3、将dll放到项目配置里的资源的文件组

4、在程序开发环境里,仍然是需要对程序集进行引用的,但程序生成.exe文件后,就不需要再另外附带着dll了。就像我的vxterm一样,虽然引用了第三方的dll,但程序生成后,就仅仅是一个vxterm.exe,我再把程序所用到的配置文件的默认值都写到程序里,这样,程序就不需要专门做发布的流程、不需要安装,纯纯的一个真正的绿色软件。

转载请注明 : 文章转载自不了阁-飞哥 blog.forbs.cn
本站文章除注明转载/出处外,均为本站原创或翻译。若要转载请务必注明出处,尊重他人劳动成果共创和谐网络环境。





