【发布时间】:2015-12-10 00:21:01
【问题描述】:
我继承了一个使用 Microsoft Enterprise Library 的应用程序。应用程序的VS解决方案包含大约200个项目。
我一直在重组解决方案,移动项目并删除过时的项目。我需要整理一下,以便为其他开发人员做好准备。
该解决方案包含特定版本的 Microsoft 企业库 dll,但是当我四处移动时,我注意到有些项目没有引用这些 dll,而是引用了我的 GAC 中的 dll。
我需要确保解决方案不依赖于安装的任何其他东西(在 GAC 中或其他方式中)或记录它,因此下一个人在从源代码管理中提取它时不会有令人讨厌的惊喜。
我试图从 GAC 中删除企业库 dll。它是这样失败的:
C:\WINDOWS\system32>gacutil /u Microsoft.Practices.EnterpriseLibrary.Common
Microsoft (R) .NET Global Assembly Cache Utility. Version 4.0.30319.0
Copyright (c) Microsoft Corporation. All rights reserved.
Assembly: Microsoft.Practices.EnterpriseLibrary.Common, Version=4.1.0.0, Culture=neutral, PublicKeyToken=e44a2bc38ed2c13c, processorArchitecture=MSIL
Unable to uninstall: assembly is required by one or more applications
Pending references:
SCHEME: <WINDOWS_INSTALLER> ID: <MSI> DESCRIPTION : <Windows Installer>
Number of assemblies uninstalled = 0
Number of failures = 0
此消息让我认为此 dll 被安装了 Windows Installer (MSI) 的应用程序引用。
我的机器没有 Microsoft Enterprise Library 作为控制面板/程序和功能中的一项。
如何找出在 gac 中安装 DLL 的 MSI 安装产品?
编辑:不是骗子。另一个问题是关于进程资源管理器没有在 GAC 中显示程序集的情况,而 KB 正在讨论即使程序集没有被任何东西引用也无法删除的情况。另一个问题的进程资源管理器部分与我无关,因为我不希望程序集一直被加载。 kb 响应也无济于事,因为我不想删除我想找出安装它的程序的程序集。其他问题的答案没有回答这个问题(因为那不是那里所问的),但幸运的是我得到了高质量的答案here。
【问题讨论】:
标签: .net dll windows-installer gac