独立可执行

时间:2009-04-20 02:50:55

标签: vb.net deployment executable

我正在研究VB.NET中一个相对简单的程序。我试图让用户尽可能简化安装过程。

我知道可以将调试目录中的可执行文件用作独立的可执行文件,但这种方法有什么缺点吗?例如,如果用户的计算机上没有.NET,则程序将无法运行。

有没有办法发布程序,使其自包含在一个可执行文件中?

感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

我认为ClickOnce部署可执行文件是您最接近实现此目标的选择。 这是一个很好的教程,如何做到这一点:ClickOnce Deployment

答案 1 :(得分:2)

正如我所提到的,Microsoft提供ILMerge,但如果您不想使用第三方应用程序,那么您就可以自己编写代码。您的客户端仍然需要.Net Framework,但它允许您隐藏您的依赖项。如果您想要包含.Net dlls,则必须在引用设置中将引用设置为“copy local”。

此程序要求您将dll添加为资源。每当您的程序需要该DLL时,它将通过使用程序集解析挂钩按需加载它。如果你有多个dll,你必须有一个switch case或者一个列表,它根据ResolveEventArgs.Name加载了正确的dll。

Module Program
    ''//Entry Point add dependency resolver hook
    Sub Main()
        AddHandler AppDomain.CurrentDomain.AssemblyResolve, _
                   AddressOf AssemblyReslover
    End Sub

    Private Function AssemblyReslover(ByVal sender As Object, _
                                  ByVal e As ResolveEventArgs) _
                                  As Assembly
       ''//ReferenceAssembly
        Dim ra As Assembly
        ra = Assembly.Load(My.Resources.MyDLL)
        Return ra
    End Function

End Module

http://support.microsoft.com/kb/837908

答案 2 :(得分:0)

Red Gate Smart Assembly可以将.NET程序集编译为独立的可执行文件。它可以将所有依赖项嵌入到可执行文件中。

它不是免费的,但它确实带有其他非常有用的工具。我们最近开始使用它,到目前为止它非常有用。

https://www.red-gate.com/products/smartassembly/index.htm

答案 3 :(得分:-1)

我认为.NET程序通常不能成为独立程序,因为.NET框架旨在与程序分离。但是,您是否在安装期间使用distributable .NET包考虑了installing the framework?这将确保用户拥有最新版本的.NET,如果他们还没有。

(我已在此处链接到2.0软件包,您可能需要更新的版本。)