Winforms:应该在哪里发布应用程序附带的程序集

Winforms:应该在哪里发布应用程序附带的程序集,winforms,assemblies,publishing,Winforms,Assemblies,Publishing,我想手动部署非常简单的Winforms应用程序。所有引用的程序集是否都可以放在应用程序文件夹中,或者发布到哪里?(在ASP.NET中,它们可以进入\bin文件夹)。我不希望将引用的程序集放在GAC中。默认情况下,我将引用的程序集放在部署应用程序的同一文件夹中(或ASP.NET的\bin),除非有很好的理由部署到GAC。默认情况下,我将引用的程序集放在部署应用程序的同一文件夹中(或ASP.NET的\bin),除非有很好的理由部署到GAC。Eric J的答案可能是正确的,但是有理由要小心将程序集放在

我想手动部署非常简单的Winforms应用程序。所有引用的程序集是否都可以放在应用程序文件夹中,或者发布到哪里?(在ASP.NET中,它们可以进入\bin文件夹)。我不希望将引用的程序集放在GAC中。

默认情况下,我将引用的程序集放在部署应用程序的同一文件夹中(或ASP.NET的\bin),除非有很好的理由部署到GAC。

默认情况下,我将引用的程序集放在部署应用程序的同一文件夹中(或ASP.NET的\bin),除非有很好的理由部署到GAC。

Eric J的答案可能是正确的,但是有理由要小心将程序集放在应用程序文件夹中:Windows 7。我个人没有遇到过这个问题,因为我仍然在Vista地狱中,但显然在Windows 7中,受保护的管理员帐户(通常在其下运行)没有对所有应用程序文件夹的写入权限-它只对该用户安装的应用程序文件夹具有写入权限。因此,如果您的应用程序是由Windows XP或Vista用户安装的,然后该用户升级到Windows 7,则默认受保护的管理员用户将被拒绝对应用程序文件夹的写入权限(因为在新版本的Windows下,该用户具有不同的SID)

这个问题只会在您尝试升级依赖程序集时影响您,并且只会影响在早期版本的Windows下安装您的应用程序然后升级到Windows 7的用户,所以我不知道这对您有多大影响


有关更多详细信息,请参阅。

Eric J的答案可能是正确的,但在将程序集放在应用程序文件夹中时有一个值得警惕的原因:Windows 7。我个人没有遇到过这个问题,因为我仍然在Vista地狱中,但显然在Windows 7中,受保护的管理员帐户(通常在其下运行)没有对所有应用程序文件夹的写入权限-它只对该用户安装的应用程序文件夹具有写入权限。因此,如果您的应用程序是由Windows XP或Vista用户安装的,然后该用户升级到Windows 7,则默认受保护的管理员用户将被拒绝对应用程序文件夹的写入权限(因为在新版本的Windows下,该用户具有不同的SID)

这个问题只会在您尝试升级依赖程序集时影响您,并且只会影响在早期版本的Windows下安装您的应用程序然后升级到Windows 7的用户,所以我不知道这对您有多大影响


有关详细信息,请参阅。

您可以使用.NET probind定义一个相对文件夹,应用程序应在该文件夹中开始搜索.dll。您只需要在应用程序中添加一个简单的配置文件。 对于简单的应用程序,我将可执行文件和配置文件部署在根目录中,并将所需的库放置在lib子目录中:

/
|-MyApp.exe
|.MyApp.exe.config
|-lib
   |-Lib1.dll
   |-Lib2.dll

您可以使用.NET probind定义一个相对文件夹,应用程序应该在该文件夹中开始搜索.dll。您只需要在应用程序中添加一个简单的配置文件。 对于简单的应用程序,我将可执行文件和配置文件部署在根目录中,并将所需的库放置在lib子目录中:

/
|-MyApp.exe
|.MyApp.exe.config
|-lib
   |-Lib1.dll
   |-Lib2.dll

您通常也没有对Vista下的程序文件的写入权限。我是否错过了要点?@Eric J:我不知道Vista也这么做(我从一开始就把自己设置为一名普通管理员)。我以为我已经尽可能地讨厌Vista了,但我错了。你通常也没有Vista下程序文件的写权限。我是否错过了要点?@Eric J:我不知道Vista也这么做(我从一开始就把自己设置为一名普通管理员)。我以为我已经尽可能地憎恨Vista了,但我错了。