Winforms:アプリケーションに付随するアセンブリはどこで発行されるべきか
-
05-07-2019 - |
質問
手動でデプロイする非常に単純なWinformsアプリケーション。参照されているすべてのアセンブリをアプリケーションフォルダーに入れることはできますか、それともどこで公開する必要がありますか? (ASP.NETでは、\ binフォルダーに移動できます)。私はむしろGACに入れたくありません。
解決
デフォルトでは、GACにデプロイする非常に良い理由がない限り、アプリをデプロイするフォルダー(またはASP.NETの場合は\ bin)と同じフォルダーに参照アセンブリを配置します。
他のヒント
.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にアップグレードしたユーザーにのみ影響するため、これはあなたのためです。
詳細については、この記事をご覧ください。