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

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

这既不取决于我的代码,也不取决于程序集的名称(如Newtonsoft)。Json)。

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


当前回答

我看到很多技术人员已经发布了关于清除与你机器上的每个。net框架相关的asp.net运行时临时目录的帖子。但是我相信我们应该清楚地知道为什么我们需要盲目地清除所有。net框架的所有临时工作目录。在我看来,情况不应该是这样。

我的建议是,您应该尝试一种针指向的目录清除方法来解决这个问题。您如何知道要清除哪个目录?

转到IIS,右键单击左侧导航窗格中的网站节点,打开上下文菜单。在上下文菜单中指向管理应用程序->高级设置…,进入“高级设置”界面。 检查你的网站被分配到的应用程序池。在我的情况下,它是DefaultAppPool如下所示:

现在转到IIS左侧导航栏中的应用程序池节点。现在检查你的应用程序池正在运行哪个. net CLR版本。在我的例子中,它是v4.0,如下所示:

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

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

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

经验教训:这表明你的网站使用的所有临时文件并不是分散在几个目录中,而是同时被你的应用程序池引用。所以您只需要清除特定的文件夹。

其他回答

这可以在引用COM包装器dll时发生。在Visual Studio项目中,在References下,选择要引用的COM包装器dll,并确保它们具有以下属性值:"Embed Interop Types": False和"Specific Version": False。

这取决于您是否运行X64,您可能需要清理更多的位置。仅仅清理我的用户目录是不够的。

% % \ TEMP临时ASP。网络文件 C:\Windows\ Microsoft.NET \ Framework \ v2.0.50727 \临时ASP。网络文件 C:\Windows\ Microsoft.NET \ Framework \ v4.0.30319 \临时ASP。网络文件 C:\Windows\ Microsoft.NET \ Framework64 \ v2.0.50727 \临时ASP。网络文件 C:\Windows\ Microsoft.NET \ Framework64 \ v4.0.30319 \临时ASP。网络文件

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

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

明确的两个:

项目的\bin文件夹 临时文件夹(应该是C:\Users\your_username\AppData\Local\ temp \Temporary ASP。windows 7中的NET文件

看看错误是否仍然发生

您可以清除、构建或重新构建应用程序,也可以简单地删除临时ASP。C:\Users\YOUR USERNAME\AppData\Local\Temp

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

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

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