我在SQL Server复制项目上收到“试图加载格式不正确的程序”错误


318

确切的错误如下

无法加载文件或程序集“ Microsoft.SqlServer.Replication,版本= 9.0.242.0,区域性=中性,PublicKeyToken = 89845dcd8080cc91”或其依赖项之一。试图加载格式错误的程序。

在转到另一个项目两个月后,我最近又开始从事该项目。之前它工作得非常好,我已经仔细检查了所有引用。

Answers:


405

通过秃子答案下面是正确的,但你也可能需要启用32位应用程序在你的应用程序池。

资料来源:http : //www.alexjamesbrown.com/uncategorized/could-not-load-file-or-assembly-chilkatdotnet2-or-one-of-its-dependencies-an-attempt-was-made-to-load-格式错误的程序/

在设置要在本地计算机上运行(运行Vista 64位)的应用程序时,遇到此错误:

无法加载文件或程序集ChilkatDotNet2或其依赖项之一。试图加载格式错误的程序。

显然,该应用程序使用ChilKat组件,但似乎我们正在使用的版本仅为32位版本。

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

在此处输入图片说明

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

在此处输入图片说明

全做完了!


这会导致整个应用程序池以32位而不是完整的64位运行吗?重新编译对64位/所有平台的依赖关系会是更好的解决方案吗?由于NFOP,我遇到了这个问题,但是由于它是开源的,所以我可以重新编译它。
jamiebarrow11年

2
链接无效,但您的解释足以解决我的问题。+1
安德鲁·谢泼德

链接关于如何使32位应用程序的说明:blogs.msdn.com/b/rakkimk/archive/2007/11/03/...
布兰登小号

15
可能值得注意的是,此AppPool解决方案仅适用于ASP.NET应用程序-可能会使一些从未使用过/未配置ASP.NET或IIS的开发人员感到困惑。
galaktor 2011年

不能仅在IIS7.5中的IIS7中修复它
FlavorScape 2013年

120

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


我的DLL存在此问题,但我的项目> HDP属性...没有“构建”选项卡(看似所有内容,但不是全部)。“编译”和“调试”选项卡都具有“平台”下拉菜单,但是在两种情况下,下拉菜单中唯一的项是“活动(任何CPU)”。
B. Clay Shannon

我碰巧遇到上述问题的反面。我的所有东西都以64位运行,我的构建目标是任何CPU。当我将其更改为64位时,它工作得很好:)
Madhurya Gandi

87

将Web项目的属性页上“平台目标”的值更改为Any CPU

在此处输入图片说明


不幸的是,它没有任何作用。
乔纳森

4
我错了-在我删除所有“ bin”文件夹后,此方法奏效。谢谢!
乔纳森(Jonathan)

还解决了我的问题,但仅在解决方案中的每个项目都这样做之后。提到的步骤适用于C#项目。对于VB.NET项目,将“项目属性”>“编译”>“高级编译选项”>“目标CPU”更改为“ AnyCPU”
Francois Botha

6
就我而言,该项目已经针对“任何CPU”。但是我正在运行64位Windows,并试图DllImport一个老式的硬件驱动程序。专门将目标更改为x86对我来说已经解决了。
bsegraves 2011年

就我而言,我想在x64下运行。没用 更改所有建议后,我还必须将Web下的“ Bitness”也更改为x64
SKCS Kamal '18

52

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


克莱,您使用的是哪个IIS版本?
Harpal

23

我们最近在尝试从Visual Studio运行代码时遇到了问题。在这种情况下,您需要执行“
工具”>“选项”>“项目和解决方案”>“ Web项目”,并选中“将IIS Express的64位版本用于网站和项目”。


1
这才是最终为我工作的东西。特别适合尝试使用Service Fabric库调试Web API的人们!!!如果您在项目中使用任何Service Fabric DLL,请确保使用上述解决方案。
克里斯·杜特拉

这是唯一为我工作的解决方案。谢谢。:D
杰里米·斯泰尔斯

也为我工作!
铜ĐứcHIEU

11

对于那些在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文件夹中的所有内容。当我从垃圾箱中删除DLL并重新构建时,错误消失了。


我只是进行了一次重建,而不必手动删除DLL,问题就消失了。谢谢!
特雷弗

4

我在Windows 10中针对IIS Express的MVC5应用程序中拥有此功能。我的解决方案如下:

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

3

将其更改为32位(true)即可​​工作

如果得到此长度,则长度不能小于零。参数名称:iis服务器配置中的长度问题做简单的事情来更改web.config文件中的连接字符串(例如sql服务器名称和服务器名称),然后重新启动iis,然后尝试加载其有效的页面


2

如果出现错误时在Visual Studio 2012中发布,请尝试取消选中发布向导中的“发布时编译”选项。

取消选中“发布时预编译”



0
  1. 删除位于以下位置的临时测试目录C:\ Users(User)\ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \

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

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

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.