3

私は VB.NET で比較的単純なプログラムに取り組んでいます。ユーザーにとってインストールプロセスをできるだけ簡単にしようとしています。

デバッグ ディレクトリの実行可能ファイルをスタンドアロンの実行可能ファイルとして使用できることはわかっていますが、この方法に欠点はありますか? たとえば、ユーザーのマシンに .NET がインストールされていない場合、プログラムは実行されません。

プログラムを公開して、単一の実行可能ファイルに自己完結させる方法はありますか?

手伝ってくれてありがとう。

4

4 に答える 4

2

前述したように、MicrosoftはILMergeを提供していますが、サードパーティのアプリケーションを使用したくない場合は、これを自分でコーディングする方法です。クライアントには引き続き.NetFrameworkが必要ですが、依存関係を非表示にすることができます。.Net dllも含める場合は、参照設定で「ローカルコピー」に参照を設定する必要があります。

このプログラムでは、dllをリソースとして追加する必要があります。プログラムがそのdllを必要とするときはいつでも、アセンブリ解決フックを使用してオンデマンドでそれをロードします。複数のdllがある場合は、ResolveEventArgs.Nameに基づいて正しいdllをロードするswitchケースまたはリストを検索する必要があります。

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

于 2010-09-04T18:48:05.093 に答える
2

ClickOnce 展開実行可能ファイルが、これを達成するための最も近い方法だと思います。これを行う方法についての素晴らしいチュートリアルは次のとおりです: ClickOnce 配置

于 2009-04-20T02:57:04.440 に答える
0

Red Gate Smart Assembly は、.NET アセンブリをスタンドアロンの実行可能ファイルにコンパイルできます。すべての依存関係を実行可能ファイルに埋め込むことができます。

無料ではありませんが、他の非常に便利なツールが付属しています。私たちは最近これを使い始めましたが、これまでのところかなり便利です。

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

于 2010-09-02T21:10:36.680 に答える