我想手动部署的非常简单的 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 地狱中,但显然在 Windows 7 中,受保护的管理员帐户(您通常在其下运行)没有对所有应用程序文件夹的写访问权限 - 它仅对该用户安装的应用程序文件夹具有写访问权限。因此,如果您的应用程序是由 Windows XP 或 Vista 用户安装的,然后该用户升级到 Windows 7,您的默认受保护管理员用户将被拒绝对该应用程序文件夹的写入权限(因为它在新版本的 Windows 下具有不同的 SID )。
如果您尝试升级依赖程序集,此问题只会影响您,并且只会影响在早期版本的 Windows 下安装您的应用程序然后升级到 Windows 7 的用户,所以我不知道这会有多大的影响为你而存在。
有关更多详细信息,请参阅本文。