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

最近我在C#解决scheme遇到以下exception:

错误2无法加载文件或程序集“Newtonsoft.Json,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = b9a188c8922137c6”或其依赖项之一。 该参数不正确。 (从HRESULTexception:0x80070057(E_INVALIDARG))

这不取决于我的代码或程序集的名称(如在这种情况下, Newtonsoft.Json )。

当我从解决scheme中删除这个dll时,编译器会告诉另一个exception。 所以我想应该关掉/打开我的电脑:)

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

同时清除:

  1. 您项目的\ bin文件夹

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

并看看是否仍然发生错误

根据您是否运行X64,您可能需要清理更多的点。 只是清理我的用户目录是不够的。

  1. %TEMP%\ Temporary ASP.NET文件
  2. C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET文件
  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

如果您安装了其他版本的框架,这个列表将会增长。

我必须清除

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

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

要知道要清除的内容 – 添加以下registry项:

 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**. 

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

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

您也可以清除软件包目录,并允许NuGet重新下载缺失的软件包

它解决了我的问题

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

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

从源代码控制获取新的一组二进制文件帮助。

谢谢

只要清除这个文件夹:(只有Windows x64)

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

感谢亚历克斯第二点帮助我解决这个问题。

看来,除非你在Windows 7中以pipe理员身份运行Visual Studio,否则它会在本地存储临时文件,而不是C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET文件。

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

我在这里有同样的问题 – 上述解决scheme不起作用。 问题出在ActionMailer上。 我运行以下卸载并安装nuget命令

 uninstall-package ActionMailer install-package ActionMailer 

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

我只是从这个path删除我的应用程序临时数据

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

问题解决

清除C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET文件为我工作。 考虑将删除过程自动化以避免将来的问题。

如果您正在使用2013年5月1日使用VS2010shell的SQL Server 2012的数据工具,请检查您的Configuration Manager设置。 从工作stream到xCPWorkflow的服务器名称更改就足以生成完全相同的参数不正确(HRESULTexception:0x80070057(E_INVALIDARG))消息。

引用COM包装器DLL时可能会发生这种情况。 在您的Visual Studio项目中,在参考下,select被引用的COM包装器DLL,并确保它们具有以下属性值:“embedded互操作types”:False和“特定版本”:False。

您可以清理,构build或重build应用程序,或者简单地删除C:\ Users \ YOUR USERNAME \ AppData \ Local \ Temp中的 临时ASP.NET文件

这工作像魔术一样。 在我的情况下,我有一个程序集绑定问题,说无法加载文件啰嗦嗦

你也可以看到解决scheme2为http://www.codeproject.com/Articles/663453/Understanding-Clean-Build-and-Rebuild-in-Visual-St

我看到很多技术人员已经发布了关于清理与您的机器上托pipe的每个.Net框架有关的ASP .Net运行时临时目录的信息。 但是我相信我们应该知道明确的后勤为什么我们需要盲目地清除所有.Net框架的临时工作目录。 据我所知,情况并非如此。

我的build议是,你应该尝试一个针尖目录清理的方法来解决这个问题。 你怎么知道要清除哪个目录?

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

在这里输入图像描述

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

在这里输入图像描述

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

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

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

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

这个问题涉及被引用的类库的.Net运行时版本(扩展引用,select库并检查“运行时版本”)。在将我的visual studio项目升级到v4.5后,Antlr3.Runtime出现问题。使用NuGet卸载微软ASP.NET Web优化框架(由于一系列的依赖,阻止我直接卸载Antlr3)

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

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

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

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

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

有时候你也需要清理这个文件夹:C:\ Windows \ Temp \ Temporary ASP.NET

我遇到了同样的错误,因为应用程序没有在C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\文件夹中find依赖框架。 我只是修复了我的视觉工作室,在上面的位置添加了必要的框架,它工作正常。

在我的情况下,更改我的项目属性中的IISExpress端口号,解决了这个问题。

如果有其他人使用WiX工具集,我发现我的安装程序项目引用了一个最近从解决scheme中删除的旧项目。 花了我一段时间才意识到,因为我正在试图build立的解决scheme中有一些项目,并没有指出哪个项目没有build立(和干净,这也失败了)。

我有用于Microsoft Office的Siemens Teamcenter 10客户端的用户获得有关不同DLL的相同错误。 没有其他答案的工作。 解决scheme是删除文件夹

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

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