无法加载文件或程序集……参数不正确


211

最近,我在C#解决方案中遇到了以下异常:

错误2无法加载文件或程序集'Newtonsoft.Json,版本= 3.5.0.0,文化=中性,PublicKeyToken = b9a188c8922137c6'或其依赖项之一。参数错误。(来自HRESULT的异常:0x80070057(E_INVALIDARG))

这既不依赖于我的代码也不依赖于程序集的名称(如Newtonsoft.Json本例所示)。

当我从解决方案中删除此dll时,编译器会在同一异常中告知另一个dll。所以我想应该在我的电脑上关闭/打开某些东西:)


3
否。它是编译器错误还是运行时异常。我怀疑是后者。请更清楚。
leppie 2011年

2
我也遇到过同样的异常,但是我设法用Thomas的解决方案对其进行了修复。问题是由于电源故障导致系统关闭不正常
Sandeep 2013年

Answers:


346

看起来像一个损坏的程序集被引用。

清除两个:

  1. 项目的\ bin文件夹

  2. 临时文件夹(应该C:\Users\your_username\AppData\Local\Temp\Temporary ASP.NET Files在Windows 7中)

看看错误是否仍然发生


3
亚历克斯非常感谢!第二件事帮助了:我清理了临时的ASP.NEt文件目录)
Liker777

很高兴听到它的效果。如果有帮助,请记住接受答案:)
Alex

9
请参阅@Thomas的答案以删除其他位置(这对我
有用

3
谢谢。硬崩溃后清除用户temp文件夹为我解决了问题。
Petrus Theron

13
%TEMP%\ ASP.NET临时文件C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ ASP.NET临时文件C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ ASP.NET临时文件C :\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ ASP.NET临时文件C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ ASP.NET临时文件C:/Windows/Microsoft.NET/Framework/ v4.0.30319 / ASP.NET临时文件此列表将随着您具有.NetFramework的其他版本而增长。答案Src:stackoverflow.com/a/16033324/1724777 stackoverflow.com/a/11743430/1724777 概率问题的原因:BLUE_SCREEN_OF_DEATH
NavaRajan 2014年

286

根据您是否正在运行X64,您可能需要清理另外两个位置。仅清理我的用户目录是不够的。

  1. %TEMP%\ ASP.NET临时文件
  2. C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \临时ASP.NET文件
  3. C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \临时ASP.NET文件
  4. C:\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \临时ASP.NET文件
  5. C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ ASP.NET临时文件

就像您安装了其他版本的框架一样,此列表也会增加。


72
如果计算机在编译过程中被蓝屏了,您可能会发现需要执行此操作
Simon_Weaver 2012年

2
+1很好地编译了答案。这对我来说已经解决了,谢谢
Ralph Lavelle 2013年

7
如果您在计算机崩溃时以管理员身份运行Visual Studio,或者电池电量用尽时像我一样笨拙,这似乎是解决方案。
2013年

4
我的天啊!我在那些地方的史前项目中获得了超过4GB的存储空间!这东西难道没有清理过吗?!?!谢谢!
user2173353

2
只是想让您知道,两年多来,此帖子仍在为人们提供帮助。非常感谢。
劳伦斯·弗罗斯特

42

我必须清除

C:/Windows/Microsoft.NET/Framework/v4.0.30319/临时ASP.NET文件

只有这样,问题才能得到解决。


1
这个答案也对我有用,在IIS Express中托管MVC 4的64位Win 7机器
Ben H

13

要确定要清除的内容,请添加以下注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion\EnableLog (DWord set to 1).

然后,您将看到如下输出。这告诉您asp.net在哪里尝试加载DLL。清除该目录。

LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\app\AtlasAdvisor\web\web.config
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL **file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/3c8629f7/dfa387b6/Avanade.ViddlerNet.DLL.**
LOG: Attempting download of new URL **file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/3c8629f7/dfa387b6/Avanade.ViddlerNet/Avanade.ViddlerNet.DLL**.

3
哦,而且,要我查看路径,必须进行IIS重置。
Landon Poch 2014年

该日志显示在哪里?
路加·赖斯

发生异常时,日志将显示在错误输出中
voidstr

12

在以下位置清除项目的临时框架文件:

C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ ASP.NET临时文件\


5

您还可以清除程序包目录,并允许NuGet重新下载缺少的程序包

它为我解决了这个问题


...和我,尽管我只是删除了有问题的软件包目录。
Phil Cooper

我删除了AppData中的临时文件temp&c:\ ... \ micorosoft.net \ .. \ temp,iisreset,...上面提到的所有内容。但不适用于我。一旦我删除了所有软件包并恢复了它...它可以与我一起工作...非常感谢:D
bunjeeb

@bunjeeb这是一个乐子:)
megz

4

从这些文件夹中删除所有文件。

C:/Windows/Microsoft.NET/Framework/v4.0.30319/ASP.NET临时文件C:/Windows/Microsoft.NET/Framework64/v4.0.30319/ASP.NET临时文件


3

从源代码管理中获取新的二进制文件很有帮助。

谢谢


3

只需清除此文件夹:(仅适用于Windows x64)

C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \临时ASP.NET文件



2

我在这里遇到了同样的问题-上述解决方案不起作用。问题出在ActionMailer上。我运行了以下卸载并安装nuget命令

uninstall-package ActionMailer
install-package ActionMailer

解决了我的问题,希望会对别人有所帮助。


2

引用COM包装器dll时可能会发生这种情况。在Visual Studio项目的“引用”下,选择要引用的COM包装器dll,并确保它们具有以下属性值:“嵌入的互操作类型”:False和“特定版本”:False。


这是一个很好的答案,应该得到更多的支持。所有其他答案都将ASP.NET上下文视为理所当然。但是,我在一个简单的控制台应用程序中通过COM调用引发了相同的异常。这对我来说非常合适。谢谢你,先生。
alexlomba87

2

我只是从此路径删除我的应用程序临时数据

C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files

解决问题


2

我看到许多技术人员发布了有关清除与计算机上托管的每个.Net框架有关的ASP .Net运行时临时目录的信息,如下所示答案。但是我相信,对于为什么我们需要盲目清除所有.Net框架的所有临时工作目录,我们应该清楚了解。据我说,事实并非如此。

我的建议是,您应该尝试使用精确的目录清除方法来解决此问题。您怎么知道要清除哪个目录?

  1. 转到IIS,然后右键单击左侧导航窗格中的网站节点以打开上下文菜单。在上下文菜单中,指向Manage Application-> Advanced Settings...以打开Advanced Settings窗口。
  2. 检查您的网站分配给的应用程序池。就我而言DefaultAppPool,如下所示:

在此处输入图片说明

  1. 现在转到Application PoolsIIS左侧导航栏中的节点。现在,检查您的应用程序池正在运行哪个.Net CLR版本。就我而言,它是v4.0,如下所示:

在此处输入图片说明

由于我的应用程序池托管的CLR版本是v4.0,因此我只清除了与ASP .NET v4.0有关的文件夹中的临时文件,如下所示:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files

就是这样。我的问题解决了。

获得的经验教训:这表明您的网站使用的所有临时文件并没有分散在多个目录中,而是由应用程序池一次引用。因此,您只需要清除该特定文件夹。



1

如果您使用的是SQL Server 2012的数据工具(截至2013年5月1日使用VS2010 Shell),请检查Configuration Manager设置。服务器名称从Workflow更改为xCPWorkflow足以产生完全相同的参数。错误消息(HRESULT异常:0x80070057(E_INVALIDARG))消息。




0

问题与引用的类库的.Net运行时版本有关(扩展了的引用,请选择该库并检查“运行时版本”。将Visual Studio项目升级到v4.5后,我遇到了Antlr3.Runtime的问题。使用NuGet卸载Microsoft ASP.NET Web优化框架(由于一连串的依赖关系使我无法直接卸载Antlr3)

然后,我使用NuGet重新安装了Microsoft ASP.NET Web优化框架。这将重新安装正确的运行时版本。


0

就我而言,我想编译一个COM可见DLL。问题在于此DLL的旧版本位于:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE

因此,Visual Studio在尝试注册该版本时,将加载此版本而不是新编译的版本。


0

清除临时文件夹(C:\ Users \用户名\ AppData \ Local \ Temp \ Temporary ASP.NET Files \ project文件夹)中的所有文件


0

有时,您也需要清理此文件夹:C:\ Windows \ Temp \ Temporary ASP.NET


0

我遇到了同样的错误,因为应用程序在C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\文件夹中找不到依赖的框架。我只是修理了Visual Studio,在上面的位置添加了所需的框架,并且它工作正常。


0

就我而言,更改项目属性中的IISExpress端口号可以解决此问题。


0

如果其他人正在使用WiX工具集,我会发现我的安装程序项目引用了最近从解决方案中删除的旧项目。我花了一段时间才意识到,因为我正在尝试构建的解决方案中有许多项目,而该消息并没有指出哪个项目构建失败(并且清理也失败了)。


0

我有用于Microsoft Office的Siemens Teamcenter 10 Client的用户,但对于不同的DLL遇到相同的错误。其他答案均无效。解决的办法是删除文件夹

C:\Users\%username%\AppData\Local\assembly\

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.