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

时间:2011-11-25 12:49:26

标签: c# exception compiler-construction compiler-errors

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

  

错误2无法加载文件或程序集'Newtonsoft.Json,   Version = 3.5.0.0,Culture = neutral,PublicKeyToken = b9a188c8922137c6'或   其中一个依赖项。参数不正确。 (例外   HRESULT:0x80070057(E_INVALIDARG))

这不依赖于我的代码或程序集的名称(在这种情况下就像Newtonsoft.Json)。

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

27 个答案:

答案 0 :(得分:344)

看起来被引用的程序集已损坏。

清除两者:

  1. 项目的\ bin文件夹

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

  3. 并查看错误是否仍然发生

答案 1 :(得分:284)

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

  1. %TEMP%\ Temporary ASP.NET Files
  2. C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files
  3. C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files
  4. C:\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Temporary ASP.NET Files
  5. C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files
  6. 此列表将增长,就好像您已安装其他版本的框架一样。

答案 2 :(得分:41)

我必须清除

  

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

只有这样才能解决问题。

答案 3 :(得分: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**.

答案 4 :(得分:12)

清除项目的临时框架文件: -

C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \

答案 5 :(得分:5)

您也可以清除packages目录并允许 NuGet 重新下载丢失的包

它解决了我的问题

答案 6 :(得分:4)

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

  

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

答案 7 :(得分:3)

从Source控件获取新的二进制文件有帮助。

由于

答案 8 :(得分:3)

只需清除此文件夹:(仅限Windows x64)

  

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

答案 9 :(得分:2)

我在这里遇到了同样的问题 - 以上解决方案无效。问题在于ActionMailer。我运行了以下卸载并安装了nuget命令

uninstall-package ActionMailer
install-package ActionMailer

解决了我的问题,希望能帮助别人。

答案 10 :(得分:2)

我看到很多技术人员发布了关于清除ASP .Net运行时的临时目录的问题,这些目录与机器上托管的每个.Net框架有关,如this答案。但我相信我们应该知道明确的物流,为什么我们需要盲目地清除所有.Net框架的所有临时工作目录。据我说,情况应该不是这样。

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

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

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

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

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

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

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

答案 11 :(得分:2)

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

答案 12 :(得分:2)

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

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

问题解决

答案 13 :(得分:2)

感谢Alex,你的第二点帮助我解决了这个问题。

除非您在Windows 7中以管理员身份运行visual studio,否则它会在本地存储您的临时文件,而不是C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files。

请参阅以下博文:http://www.dotnetscraps.com/dotnetscraps/post/Location-of-Temporary-ASPNET-files-in-Vista-or-Windows-7.aspx

答案 14 :(得分:1)

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

答案 15 :(得分:1)

您可以清理,构建或重建应用程序,也可以直接删除 C:\ Users \ YOUR USERNAME \ AppData \ Local中的 Temporary ASP.NET Files \温度

这就像魔法一样。在我的情况下,我有一个装配绑定问题,说无法加载文件bla bla bla

您还可以将解决方案2视为http://www.codeproject.com/Articles/663453/Understanding-Clean-Build-and-Rebuild-in-Visual-St

答案 16 :(得分:1)

清除C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files适合我。考虑自动删除过程以避免将来出现问题。

答案 17 :(得分:0)

我在打开Nuget Packet Manager时遇到了类似的问题, 我删除了所有临时文件并构建了项目,效果很好。

答案 18 :(得分:0)

问题与引用类库的.Net运行时版本有关(expaned references,选择库并检查“运行时版本”。在将Visual Studio项目升级到v4之后,我遇到了Antlr3.Runtime的问题。 5.我使用NuGet卸载Microsoft ASP.NET Web Optimization Framework(由于一系列依赖性导致我无法直接卸载Antlr3)

然后我使用NuGet重新安装Microsoft ASP.NET Web Optimization Framework。这重新安装了正确的运行时版本。

答案 19 :(得分:0)

在MVC中制作控制器时遇到了这个问题。我更改了.net框架版本。问题解决了

答案 20 :(得分:0)

我让西门子Teamcenter 10 Client for Microsoft Office的用户获得了关于不同DLL的相同错误。其他答案都没有奏效。解决方案是删除

中的文件夹
C:\Users\%username%\AppData\Local\assembly\

答案 21 :(得分:0)

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

答案 22 :(得分:0)

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

答案 23 :(得分:0)

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

答案 24 :(得分:0)

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

答案 25 :(得分:0)

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

答案 26 :(得分:0)

在我的情况下,我想编译一个COM可见的DLL。问题是此DLL的旧版本位于此处:

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

因此Visual Studio加载了这个版本而不是新编译的版本,因为它试图注册它。