首页 文章

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

提问于
浏览
208

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

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

这不依赖于我的代码或程序集的名称(在本例中类似于 Newtonsoft.Json ) .

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

26 回答

  • 12

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

    清除两者:

    • 项目的\ bin文件夹

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

    并查看错误是否仍然发生

  • 2

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

    • %TEMP%\临时ASP.NET文件

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

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

    • C:\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Temporary ASP.NET Files

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

    此列表将增长,就像您安装了其他版本的框架一样 .

  • 3

    我必须清楚

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

    只有这样才能解决问题 .

  • 1

    要知道要清除的内容 - 添加以下注册表项:

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

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

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

  • 0

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

    它解决了我的问题

  • 2

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

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

  • 0

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

    谢谢

  • 13

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

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

  • 0

    谢谢亚历克斯你的第二点帮我解决了这个问题

    看来,除非您在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

  • 2

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

    uninstall-package ActionMailer
    install-package ActionMailer
    

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

  • 284

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

  • 5

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

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

    问题解决了

  • 0

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

    我的建议是你应该尝试使用引脚指向目录清除方法来解决这个问题 . 你怎么知道要清除哪个目录?

    • 转到IIS并右键单击左侧导航窗格中的网站节点以打开上下文菜单 . 在上下文菜单中指向 Manage Application - > Advanced Settings... 打开 Advanced Settings 窗口 .

    • 检查您的网站所分配的应用程序池 . 在我的情况下,它是 DefaultAppPool ,如下所示:

    enter image description here

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

    enter image description here

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

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

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

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

  • 0

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

  • 3

    如果您使用的是2013年5月1日使用VS2010 shell的SQL Server 2012的数据工具,请检查Configuration Manager设置 . 从Workflow到xCPWorkflow的服务器名称更改足以生成完全相同的 The parameter is incorrect (Exception from HRESULT: 0x80070057 (E_INVALIDARG)) 消息 .

  • 0

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

    这就像魔法一样 . 在我的情况下,我有一个装配绑定问题说 Could not load file bla bla bla

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

  • 0

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

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

  • 0

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

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

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

  • 1

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

  • 2

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

  • 4

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

  • 1

    在我的例子中,更改项目属性中的IISExpress端口号解决了问题 .

  • 0

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

  • 41

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

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

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

相关问题