问题标签 [gacutil]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
638 浏览

c# - 在 GAC 中注册自定义 C# 程序集

我用 C# 编写了一些代码并制作了 dll 文件。当我将我的应用程序放在另一个系统上时,我的应用程序需要 .exe 文件旁边的 dll 文件。我知道一些 dll 文件复制到 GAC 并且 exe 文件不再需要这些文件。我也知道如果 dll 是 ActiveX 或 COM 类型,我们可以使用 regsvr32 或 regAsm。但我不知道如何在 Windows 中注册自己的 dll 文件。

0 投票
1 回答
260 浏览

visual-studio-2012 - 使用 VS2012 进行代码分析 - 缺少 Dll 引用 / GAC

我正在尝试对我的项目进行代码分析,但我被许多 DLL 解决问题所困扰。

我已经使用 gacutil 向 GAC 添加了一些 dll 并通过这种方式解决了一些问题,但是我看到一个关于引用 System.Net.Http 版本 2.0.0.0 的错误。

我的解决方案中没有对这个 DLL 的单一引用,事实上,我的机器上的任何地方都没有这个 DLL,只有版本 1.0.0.0 或 4.0.0.0。

我在网站的配置文件中确实有这个 dll 的绑定重定向,但显然代码分析过程没有使用它。

我不确定如何最好地进行此操作。我可以将代码分析配置为使用绑定重定向吗?或者我是否需要在线寻找 DLL 以便 GAC 获得它们?

将不胜感激任何想法,谢谢。

0 投票
3 回答
691 浏览

c# - 如何以编程方式获取 TargetPath + GacUtil 注册

我需要什么?我写了一些 BizTalk Functoid 和 BizTalk Pipeline Components。但在您可以在映射(Functoid)或管道(管道组件)中使用它们之前,您需要将其复制到特定文件夹。

将其复制到文件夹中是没有问题的。我的问题是获取目标路径。我写了一个插件。因此,您可以单击菜单项。您还选择了 functoid 的项目。因此,当您现在单击菜单项时。它应该获取该程序集的 targetPath。它需要将“dll”文件复制到我的另一个文件夹中。

如何以编程方式获取“TargetFolder”?

另外,我如何将程序集注册到 GAC?在我使用的batfile中

"gacutil /i '程序集路径' /f"

使用 /f 参数,我们强制覆盖程序集。在 c# 中,您不能强制这样做。您是否需要先尝试删除程序集并将其注册到 GAC?

0 投票
1 回答
1263 浏览

sharepoint - 无法将库加载到程序集中 (GAC)

我在 Windows Server 2010 上使用 Visual Studio 2010 和 Sharepoint 2010 服务器。我正在将 webpart 部署到在同一台服务器上运行的 Sharepoint 实例。

我的新 webpart 使用自定义库,AE.Net.Mail. 当我部署此 Web 部件时,我收到Could not load file or assembly...AE.Net.Mail. 我已经跑gacutil了,但在C:\Windows\assembly. 我确实在C:\Windows\Microsoft.NET\assembly.

现在我不确定这一点,但我认为当我的 Sharepoint 实例运行时,它只会查看C:\Windows\assembly. 这就是它无法找到图书馆的原因。我相信这是因为我的 webpart 的名称存在于C:\Windows\assembly. 它被缓存在那里,而不是在C:\Windows\Microsoft.NET\assembly.

我正在使用AE.Net.Mail Version 1.6.0.0.NET 3.5. 我认为我的 Sharepoint 服务器正在使用 3.5,尽管机器上存在 4.0。我是这么认为的,因为当我尝试使用 nuget 安装库时,我无法安装需要 .NET 4.0 的最新版本。错误说我的项目使用的是3.5。1.6.0.0 版本与 3.5 兼容

那么,你们认为发生了什么,你们认为我可以如何AE.Net.Mail进入C:\Windows\assembly?一直在这几个小时,我想不通(拖放不起作用)

多谢你们。:)

0 投票
1 回答
454 浏览

.net-assembly - 我在 GAC 上的策略重定向不起作用

我在 WinForms 中创建了一个基本项目,在该项目上.exe加载了一个非常简单的库:

.exe:

图书馆:

真的很简单。库的第一个版本的程序集:

然后我在 GAC 上安装了 v1.0.0.0:

我将库上的代码更改为不同的:

并将程序集版本更改为 1.0.0.1。然后我将该库安装到 GAC。

仍在消耗 1.0.0.0 .dll,因此.exe我创建了一个使用 v1.0.0.1 的策略:

.config看起来像这样的地方:

之后,我将策略安装到 GAC:

它说程序集已成功添加到缓存中,但我的 .exe 仍在使用 v1.0.0.0。

那么,为什么我的重定向不起作用?

0 投票
0 回答
143 浏览

windows-server-2008 - 将(某种)弱命名的 .dll 安装到 GAC

我需要将一些程序从一台服务器迁移到另一台服务器。在此过程中,我发现我们缺少一个 .dll - 我在原始服务器上对其进行了跟踪。它既在文件系统上(在似乎是一个存储目录,没有链接到任何东西)和 GAC。我将存储目录中的 .dll 放到新服务器上,并尝试使用 GACUtil 安装它 - 但它失败并显示以下消息:

Failure adding assembly to cache: Attempt to install an assembly without a strong name

这对我来说似乎很奇怪,因为它显然已成功安装在以前的服务器上(两个 .dll 的版本 #s 相同)。但是,由于我没有此 .dll 的源代码,因此 GAC 中的版本可能被重新编译为强命名,并且“存储”中的版本没有更新。

一种可能的解决方法是手动安装 .dll。在 C:\Windows\Microsoft .NET\assembly\ 中存在 .NET 4.0 分隔的 GAC 目录结构,我可以在其中创建一个 GAC_MSIL\[.dllname]\v###__[PublicKey]\ 文件夹,使用相同的公共密钥作为旧服务器上的 GAC 实现,并将 .dll 文件放在那里。但是,.dll 绝对不是用 .NET 4.0(甚至是 .NET 3.5,我不认为)编译的——所以这还能用吗?或者我必须做出哪些改变才能让它发挥作用?

我不知道如何手动将某些东西安装到“旧”GAC 中,即带有 Windows 资源管理器 GUI 的那个,因为目录结构没有暴露给我。这个答案(https://stackoverflow.com/a/382318/1675729)似乎表明有一个基础结构,我可以尝试类似的手动安装方法 - 如果这可行,有人可以给我更多信息关于如何访问该结构?

当然,如果有办法将弱命名的 .dll 安装到 GAC 中,那将是理想的选择。这个 .dll 不会导致任何 .dll 地狱般的问题,因为它有特定的用途(和名称),并且只会被一个程序使用。但是,我不知道如何做到这一点,而且由于它似乎完全违背了 GAC 的目的,因此缺乏相关信息我并不感到惊讶。

我对任何和所有建议持开放态度,并且很乐意提供更多我可以提供的信息——我不确定这里有什么重要的注意事项。

非常感谢!

0 投票
1 回答
767 浏览

visual-studio-2010 - 强制 Visual Studio 2010 使用旧版本的 gacutil.exe(生成后事件)

我正在开发一个简单的安装程序WiX,我正在尝试在其上安装 .dll 和 GAC 上的发布者策略。

我使用安装程序在 GAC 上成功添加了 .dll。但我想使用 Visual Studio 中的 PostBuild 事件来执行 msbuild 命令。我需要做的事情的顺序是:

  1. 创建publisher policyVisual Studio 的构建后事件。

  2. 执行命令al /link:the.config /out:the.policy.dll /keyfile:thekey.snk /platform:x86

  3. 使用特定的 GACUTIL 发布策略。

如果我是正确的,如果我执行,Visual Studio 将在新的 GAC 1gacutil -i Policy.1.0.TestLibrary.dll上安装此策略,我想使用旧的2

如何告诉 Visual Studio 在 Post Build 事件中使用特定的 gacutil?

我为 PostBuild 事件尝试了这个:

但是得到The command "...." exited with code 9009.

另外,如果我在旧 GAC 上发布 Library.v1.0.dll,然后在新 GAC 上安装 Library.v2.0.dll,如果我创建从 v1.0 到 v2.0 的发布者策略,他们会找到对方?

[1]:GAC 用于 .Net Framework 4.0 及更高版本。
[2]:GAC 用于 .Net Framework 3.5 及更低版本。

0 投票
1 回答
1256 浏览

windows - 无法卸载基础设施。找不到 gacutil

我正在尝试卸载 infragistics,但在卸载结束时出现错误提示“Windows 找不到 gacutil。请确保您输入了正确的名称,然后再试一次'。我导航到此路径“C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools”,gacutil 文件就在那里。对这些有什么想法吗?我被基础设施困住了,我无法卸载它们。

0 投票
1 回答
2113 浏览

c# - 使用 GAC 程序集需要权限

我刚刚在 GAC 上安装了两个库,我试图在一个简单的应用程序中使用它们,我只调用我的方法的构造函数:

当我尝试运行.exe我的应用程序时,我可以在任务管理器进程中看到它,但它没有加载。

如果我提升可执行文件的权限,那么简单的应用程序会出现在任务管理器上,并且还会加载. 但是,为什么我需要为使用 GAC 程序集的应用程序授予管理员权限?这是第一次发生在我身上。

如何在不请求管理员权限的情况下使用 GAC 程序集?

我想我有 GAC 阅读权限,因为我可以阅读旧版本,但不能阅读新版本...

编辑: *我意识到,如果我停留几分钟,.dll就会消耗掉并且应用程序运行。但是每次我需要在 GAC 上安装的程序集时,都会有很大的延迟。*知道为什么吗?

编辑: 对不起,我没有说它是哪个库,因为它被称为UserControlLibrary.dll,我开发了它。我的一些旧项目中使用了我的库的旧版本。

为了使用新版本,我发布了从旧版本程序集重定向到新版本的策略。

注意:使用旧版本可以正常工作。使用新的,不起作用(重定向后)。

0 投票
1 回答
1091 浏览

.net - 无法在 .Net GAC 中注册程序集

我在向 GAC 注册程序集时遇到问题。我正在使用 Win8 x64。我需要在 .Net GAC 中注册它。这意味着程序集应该出现在这里 c:\Windows\Microsoft.Net\assembly\GAC_MSIL。在 gacutil 控制台中,我收到消息“程序集已成功添加到缓存”,但实际上它没有出现。我尝试从下一个位置使用 gacutils:

所有这些 gacutils 都使用位于 C:\Windows\assembly 的缓存。

所以我的问题是 gacutil.exe 将程序集注册到 .Net GAC 的位置。