手動で展開したい非常に単純なWinformsアプリケーション。参照されているすべてのアセンブリは、単にアプリケーションフォルダーに入れることができますか、それともどこに公開する必要がありますか?(ASP.NETでは、\ binフォルダーに移動できます)。私はむしろGACに入れたくありません。
3 に答える
デフォルトでは、参照されたアセンブリを、アプリを展開するのと同じフォルダー(または、ASP.NETの場合は\ bin)に配置します。ただし、GACに展開する非常に適切な理由はありません。
.NET probindを使用して、アプリケーションが開始時に.dllを検索する相対フォルダーを定義できます。アプリケーションに簡単な構成ファイルを追加するだけで済みます。単純なアプリの場合、実行可能ファイルと構成ファイルをルートディレクトリにデプロイし、必要なライブラリをlibサブディレクトリに配置します。
/
|-MyApp.exe
|.MyApp.exe.config
|-lib
|-Lib1.dll
|-Lib2.dll
Eric Jの答えはおそらく正しいものですが、アセンブリをアプリケーションフォルダー(Windows 7)に配置することに注意する理由があります。私はまだVista Hellにいるので、個人的にこの問題に遭遇したことはありませんが、どうやらWindows 7では、保護された管理者アカウント(通常は実行します)には、すべてのアプリケーションフォルダーへの書き込みアクセス権がありません。そのユーザーによってインストールされたアプリケーションフォルダーへの書き込みアクセス権のみがあります。したがって、アプリケーションがWindows XPまたはVistaユーザーによってインストールされ、そのユーザーがWindows 7にアップグレードした場合、デフォルトの保護された管理者ユーザーは、アプリケーションフォルダーへの書き込み権限を拒否されます(新しいバージョンのWindowsではSIDが異なるため) )。
この問題は、依存アセンブリをアップグレードしようとした場合にのみ影響します。また、以前のバージョンのWindowsでアプリケーションをインストールしてからWindows 7にアップグレードしたユーザーにのみ影響するため、これがどれほど大きな問題になるかはわかりません。あなたのために。
詳細については、この記事を参照してください。