Visual Studio参考x64 GAC

10
如何让Visual Studio 2005/2008引用64位GAC中的程序集而不是32位GAC?我们将目标平台设置为x64,编译器报错:
错误2 警告作为错误:程序集生成-引用的程序集“System.Data.dll”针对不同的处理器。 错误3 警告作为错误:程序集生成-引用的程序集“mscorlib.dll”针对不同的处理器。 错误4 程序集签名失败;输出可能未经过签名--系统找不到指定的文件。

更新于 2008 年 12 月 29 日

一直在尝试使用Aaron Stebner的建议将 64 位程序集放置在隔离位置(例如 C:\Windows\Microsoft.NET\Framework64\v2.0.50727\GAC_64),并创建额外的注册表项,如 HKLM\SOFTWARE\Microsoft.NETFramework\AssemblyFolders\GAC_64 或 HKLM\SOFTWARE\Microsoft.NETFramework\v2.0.50727\AssemblyFoldersEx\GAC_64,但 Visual Studio 2005 仍未检测到它...

3个回答

2

我不确定你为什么需要这样做。如果没有特别编译为32位的.NET代码可以运行64位,包括基础框架库。简而言之,我不知道有什么理由特别为64位编译您的程序集(除了引用非托管的64位dll,但您正在谈论GAC)。

这里可能需要更多信息。


是的,我们正在编译我们的应用程序以特定地针对x64。由于这个原因,编译器抱怨System.Data或mscorlib正在针对x86。 - icelava
在更改项目属性中的编译目标后,您是否已经重新做了受影响的引用? - sliderhouserules
考虑一个完全类型安全的.NET应用程序。在这种情况下,可以将您在32位机器上运行的.NET可执行文件移动到64位系统并成功运行。为什么会这样呢?因为该程序集是100%类型安全的,我们知道它没有依赖于本地代码或COM对象,并且没有“不安全”的代码,这意味着应用程序完全在CLR的控制下运行。 - Luke Puplett

0

我创建了一个完全免费的工具,它将帮助您实现目标。Muse VSReferences可以让您从“添加 GAC 引用”菜单项中向项目添加全局程序集缓存引用。


0
你在配置管理器中为解决方案中的所有项目设置了x64平台吗?

是的,但这并不重要。项目引用的是BCL程序集,如System.Data.dll和mscorlib.dll。它们正在引用32位GAC中的程序集。如果能够引用64位GAC将会很好。 - icelava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接