当添加到安装部署项目中的 GAC 文件夹时,强命名的 dll 未安装到 GAC

A strongly-named dll is not installing to GAC when added to GAC Folder in setup-deployment project

我正在尝试使用 Visual Studio 的设置和部署项目将多个项目共享的 dll 安装到 GAC。我已经强烈命名了我的程序集,并将项目主要输出的输出文件夹设置为 'Global Assembly Cache folder'.

Strongly named assembly capture

Project output properties capture

File System of Setup Project

构建并安装可执行文件后,我没有收到任何错误。但是,使用 GacUtil,我可以确认 dll 没有添加到 GAC。我错过了什么?

我搜索了 Whosebug 和其他来源,但没有找到解释。

GAC Util output

Assembly Tables:我只是添加一个尝试的答案,没有时间测试。在你编译的MSI中,表MsiAssemblyMsiAssemblyName中有什么吗?那里有桌子吗?似乎手动安装到 GAC 工作正常? (因此没有强名称问题)。

GAC 文件夹:如果您右键单击[=98,则不完全清楚=] 顶节点和完成 Add Special Folder => Global Assembly Cache Folder?

"Add Assembly...":确保将文件添加为此处所示的程序集,并将其添加到全局程序集缓存文件夹:

两个 GAC 的故事:我跟不上 the new GAC. Just an issue to be aware of and test. How to view the Folder and Files in GAC?:

  • .NET 1.0 - NET 3.5: c:\windows\assembly (%systemroot%\assembly)
  • .NET 4.x: %windir%\Microsoft.NET\assembly

替代工具:建议您使用 WiX or another tool. And yes, there are . Here is a WiX quick-start tip collection。 Advanced Installer 具有一些满足简单要求的免费功能。


链接:

为 dll 创建一个单独的安装项目允许程序集成功安装到全局程序集缓存。因此,我遇到的问题很可能是由于我的原始项目中的某些内容造成的,其中包含大量输出。 我很可能会将该程序集保留在它自己的安装程序中,并将此安装程序用作需要该程序集的应用程序的必需先决条件。

感谢 Stein 提供的精彩资源。我希望这个帖子以后能对其他用户有所帮助。