【问题标题】:I get a "An attempt was made to load a program with an incorrect format" error on a SQL Server replication project我在 SQL Server 复制项目上收到“尝试加载格式不正确的程序”错误
【发布时间】:2010-09-07 16:09:58
【问题描述】:

具体错误如下

无法加载文件或程序集“Microsoft.SqlServer.Replication, 版本=9.0.242.0,文化=中性,PublicKeyToken=89845dcd8080cc91' 或其依赖项之一。试图加载一个程序 格式不正确。

在两个月的时间转移到另一个项目后,我最近再次开始从事这个项目。之前效果很好,我仔细检查了所有参考资料。

【问题讨论】:

    标签: c# sql-server replication


    【解决方案1】:

    我找到了解决方案。我最近将我的机器升级到了 Windows 2008 Server 64 位。 SqlServer.Replication 命名空间是为 32 位平台编写的。为了让它再次运行,我需要做的就是将 Project Build Properties 中的 Target Platform 设置为 X86。

    【讨论】:

    • 我在使用 DLL 时遇到了这个问题,但我的项目 > HDP 属性...没有“构建”选项卡(似乎所有内容,但并非如此)。 Compile 和 Debug 选项卡都有一个“Platform”下拉菜单,但在这两种情况下,下拉菜单中的唯一项目是“Active (Any CPU)”。
    • 我正好遇到了上面问题的反面。我让所有东西都在 64 位上运行,我的构建目标是任何 CPU。当我将其更改为 64 位时,它工作得非常好:)
    【解决方案2】:

    下面的answer by baldy 是正确的,但您可能还需要在 AppPool 中启用 32 位应用程序。

    来源:http://www.alexjamesbrown.com/uncategorized/could-not-load-file-or-assembly-chilkatdotnet2-or-one-of-its-dependencies-an-attempt-was-made-to-load-a-program-with-an-incorrect-format/

    在设置应用程序以在我的本地计算机上运行时(运行 Vista 64 位)我遇到了这个错误:

    无法加载文件或程序集ChilkatDotNet2 或其之一 依赖关系。试图加载不正确的程序 格式。

    显然,应用程序使用ChilKat components,但我们使用的版本似乎只有32位版本。

    为解决此错误,我将 IIS 中的应用程序池设置为允许 32 位应用程序。 打开 IIS 管理器,右键单击应用程序池,然后选择高级设置(见下文)

    然后将“启用 32 位应用程序”设置为 True。

    全部完成!

    【讨论】:

    • 这会导致整个应用程序池运行为 32 位,而不是完整的 64 位吗?为 64 位/所有平台重新编译依赖项会是更好的解决方案吗?由于NFOP,我遇到了这个问题,但由于它是开源的,我可以重新编译它。
    • 链接失效了,但是你的解释足以解决我的问题。 +1
    • 关于如何启用 32 位应用程序的说明链接:blogs.msdn.com/b/rakkimk/archive/2007/11/03/…
    • 值得注意的是,此 AppPool 解决方案仅适用于 ASP.NET 应用程序 - 可能会使一些从未使用/配置过 ASP.NET 或 IIS 的开发人员感到困惑。
    • 仅在 IIS7.5 中没有在 IIS7 中修复它
    【解决方案3】:

    将 Web 项目属性页上的 Platform Target 值更改为 Any CPU

    【讨论】:

    • 没有效果,很遗憾。
    • 我错了 - 在我摆脱了所有的“bin”文件夹之后,这很有效。谢谢!
    • 也解决了我的问题,但只有在我的解决方案中的每个项目都这样做之后。提到的步骤适用于 C# 项目。对于 VB.NET 项目,将 Project Properties > Compile > Advanced Compile Options > Target CPU 更改为“AnyCPU”
    • 就我而言,该项目已经针对“任何 CPU”。但我正在运行 64 位 Windows 并试图 DllImport 一个老式硬件驱动程序。专门将目标更改为 x86 为我修复了它。
    • 就我而言,我想在 x64 下运行。它没有工作。更改所有建议后,我还必须将 Web 下的“Bitness”也更改为 x64
    【解决方案4】:

    对于那些在 Visual Studio 本身的 ASP.NET MVC 3 项目中遇到此错误的人:

    在我正在开发的 ASP.NET MVC 3 应用程序中,我尝试向项目中添加对 Microsoft.SqlServer.BatchParser 的引用,以解决部署服务器上缺少它的问题。 (我们的应用使用 SMO;正确的解决方法是在部署服务器上安装 SQL Server Native Client 和其他一些东西。)

    即使在我删除了对 BatchParser 的引用之后,在我打开的每个 ASP.NET MVC 3 页面上,我仍然不断收到“进行了尝试...”错误,它引用了 BatchParser DLL,并且该错误之后有几十个页面解析错误。

    如果您遇到这种情况,请进行文件搜索并查看 DLL 是否仍在您项目的 \bin 文件夹之一中。即使您进行重建,Visual Studio 也不一定会清除删除所有 \bin 文件夹中的所有内容。当我从 bin 中删除 DLL 并重新构建时,错误消失了。

    【讨论】:

    • 我刚刚进行了重建,问题就消失了,无需手动删除 DLL。谢谢!
    【解决方案5】:

    转到 IIS -> 应用程序池 -> 高级设置 -> 启用 32 位应用程序

    【讨论】:

    • Clay,你用的是哪个 IIS 版本?
    【解决方案6】:

    如果在 Visual Studio 2012 中发布时出错,请尝试在发布向导中取消选中 “发布期间的 Procompile” 选项。

    【讨论】:

      【解决方案7】:

      我们最近在尝试从 Visual Studio 运行代码时遇到了问题。在这种情况下,您需要这样做
      TOOLS > OPTIONS > Projects and Solutions > WEB PROJECTS 并勾选“Use the 64 bit version of IIS Express for web sites and projects”。

      【讨论】:

      • 这最终对我有用。特别是对于尝试使用 Service Fabric 库调试 Web API 的人!!!如果您在项目中使用任何 Service Fabric DLL,请确保您使用的是上述解决方案。
      • 这是唯一对我有用的解决方案。谢谢。 :D
      • 也为我工作!
      【解决方案8】:

      将其更改为 32 位 (true) 即可使用

      如果你得到这个长度不能小于零。参数名称:iis服务器配置中的长度问题做简单的事情改变web.config文件中的连接字符串,比如你的sql服务器名称和服务器名称,然后重新启动iis,然后尝试加载它工作的页面

      【讨论】:

        【解决方案9】:

        在 Windows 窗体应用程序中,我这样做, 右键单击 Project->Properties->Build->Check Prefer 32-bit 复选框。 谢谢大家

        【讨论】:

          【解决方案10】:
          1. 删除位于此处的临时测试目录 C:\Users(User)\AppData\Local\Temp\VisualStudioTestExplorerExtensions\

          2. 在 Visual Studio 中将所有项目设置为 x64

          3. 将默认处理器架构设置为 x64(Test/TestSettings/Default Processor Architecture)。

          确保清理构建解决方案文件。希望这会有所帮助!

          【讨论】:

            【解决方案11】:

            我在针对 IIS Express 的 Windows 10 的 MVC5 应用程序中使用了这个。我的解决方案如下:

            • 工具 =>
              • 选项 =>
                • 项目和解决方案 =>
                  • 网络项目 =>
                    • 为网站和项目使用 64 位版本的 IIS Express

            【讨论】:

              【解决方案12】:

              将项目属性中的目标框架从 .NET Framework 4.7.1 更改为 4.6.2 对我有用。

              【讨论】:

                猜你喜欢
                • 2011-05-19
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-10-13
                • 2014-01-11
                相关资源
                最近更新 更多