加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何将“类项目”中的dll嵌入到我在vb.net中的项目中

发布时间:2020-12-13 22:38:53 所属栏目:Windows 来源:网络整理
导读:我有一个标准的“类库”项目,其中包含一组用于在几乎所有新项目中导入的类. 我的工作方式是使用一个空项目创建一个新的解决方案,这是我的主要项目,然后我向解决方案中添加了提到的类库项目,这样我就可以在Soluction Explorer中看到这两个项目,甚至可以看到库
我有一个标准的“类库”项目,其中包含一组用于在几乎所有新项目中导入的类.

我的工作方式是使用一个空项目创建一个新的解决方案,这是我的主要项目,然后我向解决方案中添加了提到的类库项目,这样我就可以在Soluction Explorer中看到这两个项目,甚至可以看到库代码或者在需要时更新它.然后我在我的主项目中编写代码并编译.

这导致我在编译时有2个文件:file * .exe和stdlib.dll

在某些情况下,我将lib用于非常小的工具,我想以简单明了的方式重新分发,所以我想将我的类库项目生成的stdlib.dll嵌入到我的* .exe文件中.

我很确定必须有一个为什么要在我的Microsoft Visual Basic 2010 Express中执行此操作,但我不知道如何操作.

有什么建议吗?

非常感谢先进.

解决方法

这是一个更加“逐步”版本的 Alex’s procedure嵌入程序集.

>将所需的程序集(stdlib.dll)添加到项目的资源中.
转到Project Properties的Resources选项卡,然后选择Add Resource>添加现有文件…
>切换到“应用程序”选项卡,然后单击“查看应用程序事件”按钮
>将此代码添加到打开的ApplicationEvents.vb代码中.

Private Sub AppStart(ByVal sender As Object,ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
    AddHandler AppDomain.CurrentDomain.AssemblyResolve,AddressOf ResolveAssemblies
End Sub

Private Function ResolveAssemblies(sender As Object,e As System.ResolveEventArgs) As Reflection.Assembly
    Dim desiredAssembly = New Reflection.AssemblyName(e.Name)

    If desiredAssembly.Name = "the name of your assembly" Then
        Return Reflection.Assembly.Load(My.Resources.STDLIB) 'replace with your assembly's resource name
    Else
        Return Nothing
    End If
End Function

>现在编译您的项目,您将依赖程序集作为单个文件合并到输出中.

请注意,有时您可能在输出文件夹中具有从属程序集.这是因为VS已预先配置为将所有从属程序集复制到输出路径.您可以通过转到项目属性的“引用”选项卡来覆盖它,然后将依赖程序集的“复制本地”属性设置为False.这将停止将程序集复制到输出目录.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读