【问题标题】:Visual Studio reference x64 GACVisual Studio 参考 x64 GAC
【发布时间】:2008-10-22 07:53:22
【问题描述】:

如何让 Visual Studio 2005/2008 引用 64 位 GAC 而不是 32 位 GAC 中的程序集?我们将目标平台设置为 x64,编译器抛出错误

错误 2 警告为错误:程序集生成 -- 引用的程序集“System.Data.dll”针对不同的处理器 Common

错误 3 警告为错误:程序集生成 -- 引用程序集“mscorlib.dll” 针对不同的处理器 Common

错误 4 程序集签名失败;输出可能没有签名——系统找不到指定的文件。常见


2008 年 12 月 29 日更新

一直在尝试 Aaron Stebner's suggestions 将 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 仍然没有选择它....

【问题讨论】:

    标签: visual-studio 64-bit


    【解决方案1】:

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

    更多信息可能会有所帮助。

    【讨论】:

    • 是的,我们正在编译我们的应用程序以专门针对 x64。正因为如此,编译器抱怨 System.Data 或 mscorlib 的目标是 x86.....
    • 在项目属性中更改编译目标后,您是否重做了受影响的引用?
    • "考虑一个 100% 类型安全代码的 .NET 应用程序。在这种情况下,可以将您在 32 位计算机上运行的 .NET 可执行文件移动到 64-位系统并让它成功运行。为什么会这样?由于程序集是 100% 类型安全的,我们知道对本机代码或 COM 对象没有依赖关系,并且没有“不安全”代码,这意味着应用程序完全运行在 CLR 的控制下。” -- MSDN
    【解决方案2】:

    您是否在 Configuration Manager 中为解决方案中的所有项目设置了 x64 平台?

    【讨论】:

    • 是的,但没关系。项目引用的是 BCL 程序集,如 System.Data.dll 和 mscorlib.dll。他们在 32 位 GAC 中引用程序集。如果可以选择引用 64 位 GAC,那就太好了。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-30
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-20
      • 2015-08-16
      • 2010-12-22
      相关资源
      最近更新 更多