我在.net框架中制作了一个程序集,我打算将其发布到GAC但我找不到gacutil
的权限。
我一直在谷歌上搜索,我发现了很多建议,但没有任何作用:
[DOES NOT WORK]
[DOES NOT
WORK]
[returns an error: this assembly is built by a runtime newer
than the currently loaded runtime and cannot be loaded]
有没有人有想法解决这个问题?
答案 0 :(得分:73)
如果你已经安装了VS2010
,你应该找到一个.NET 4.0 gacutil
C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools
7.0A Windows SDK
应该与VS2010 - 6.0A
一起安装VS2008
,因此不会支持.NET 4.0。
答案 1 :(得分:36)
VS 2012/13 Win 7 64位 gacutil.exe位于
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools
答案 2 :(得分:23)
.net 4.0标准安装中不包含Gacutil。他们也移动了GAC,从%Windir%\ assembly到%Windir%\ Microsoft.NET \ Assembly。
他们甚至没有为Windows资源管理器中的文件夹添加“特殊视图”,因为它们具有.net 1.0 / 2.0 GAC。
Gacutil是Windows SDK的一部分,因此如果您想在开发机器上使用它,只需为您当前的平台安装Windows SDK。然后你会在这样的地方找到它(取决于你的SDK版本):
C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools
此处有关于新GAC的讨论:.NET 4.0 has a new GAC, why?
如果你想在生产机器上的GAC中安装一些东西,你需要以“正确的”方式(gacutil从来不是作为在生产服务器上安装东西的工具,仅作为开发工具),用Windows Installer或其他工具。你可以,例如使用PowerShell和System.EnterpriseServices dll。
总的来说,根据几年的经验,我个人强烈建议反对使用GAC。如果您将DLL与每个应用程序一起部署在其bin文件夹中,那么您的应用程序将始终有效。是的,如果您有例如DLL,您将在服务器上获得DLL的多个副本。一台服务器上有多个Web应用程序,但绝对值得灵活地升级一个应用程序而不会破坏其他应用程序(通过在GAC中引入不兼容的共享DLL版本)。
答案 3 :(得分:5)
实际上现在有一个用于.NET 4.0的GAC实用程序。它可以在Microsoft Windows 7和.NET 4.0 SDK中找到(SDK支持多个操作系统 - 而不仅仅是Windows 7 - 因此,如果您使用的是Microsoft的后续操作系统,则支持它的可能性很大。)
这是SDK。您可以下载ISO或进行Web安装。如果您想要的只是GAC Util,那就下载整个东西了。但它确实有效。