我一直在寻找一段时间试图更好地理解这一点,但我没有找到任何直截了当的答案.
我有一个组件需要添加到GAC.我正在运行Windows 7 64位,并且为了解决问题(SSIS 2005无法识别DLL),我正在尝试确保在适当的GAC中注册了DLL(.NET 4.0) .
所以这是我的问题:
Windows 7中64位和32位GAC的物理位置在哪里?我知道C:\ Windows\assembly,但不知道这是哪一个,另一个是哪里.
我使用哪个版本的gacutil将程序集添加到64位GAC?32位GAC?我知道C:\ Program Files(x86)\ Microsoft Visual Studio 10.0\VC,我假设这是32位,但不确定64位gacutil在哪里.
什么决定了应用程序在组件中查找哪个GAC?我假设这取决于应用程序是64位还是32位,但我想知道它是否还有更多.
提前致谢.
更新:
在深入了解ShaneBlake的回答之后,我记得.NET 2.0和.NET 4.0 GAC位于不同的位置.所以:
.NET 2.0 GAC :(
c:\windows\assembly32位和64位?)
.NET 4.0 GAC
c:\windows\Microsoft.NET\assembly\GAC_32(仅限32位)
c:\windows\Microsoft.NET\assembly\GAC_64(仅限64位)
c:\windows\Microsoft.NET\assembly\GAC_MSIL(32位和64位?)
我需要使用c#在GAC中安装程序集.以下是我的代码:
new System.EnterpriseServices.Internal.Publish().GacInstall("MyAssembly.dll");
Run Code Online (Sandbox Code Playgroud)
上面的代码给出了错误:
需要绝对路径
但我需要这个运行而不使用静态文件路径(绝对路径).谁能告诉我它是否可能?我在项目引用中添加了对程序集的引用.我需要在GAC中安装此程序集.
我正在使用Visual Studio 2017并尝试在两个项目之间添加新引用,但是当我单击“添加引用...”时出现以下错误。
找不到Microsoft.VisualStudio.Shell.Interop.IVsReferenceManager服务的实例。
第一个项目是Asp.Net Core,第二个项目是.NET Core类库。