在使用IIS Express和VS2017时,无法加载文件或程序集

6
我们公司有一个ASP.NET项目,由5/6个开发人员负责。所有人都使用Visual Studio 2017进行调试,使用IIS Express,没有任何疯狂的设置或其他操作来使其运行。
但是其中一位同事无法运行该项目,他总是收到以下异常信息:

enter image description here

我们几个月前就遇到了这个问题,后来由于沮丧,重新安装了电脑,问题消失了。他没有开发几个星期,今天问题再次出现。
我搜索了很久,但这是一个非常通用的错误,我真的无法解决这个问题。
当我运行融合日志查看器时,我看到以下结果:

https://pastebin.com/aCVZn3EB

The operation failed.
Bind result: hr = 0x80131018. No description available.

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Running under executable  C:\Program Files\IIS Express\iisexpress.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: DisplayName = System.ServiceModel.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
 (Fully-specified)
LOG: Appbase = file:///C:/Users/User/Projects/project/project.UserSite/
LOG: Initial PrivatePath = C:\Users\User\Projects\project\project.UserSite\bin
LOG: Dynamic Base = C:\Users\User\AppData\Local\Temp\Temporary ASP.NET Files\vs\e0254dae
LOG: Cache Base = C:\Users\User\AppData\Local\Temp\Temporary ASP.NET Files\vs\e0254dae
LOG: AppName = 38c6ff11
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Users\User\Projects\project\project.UserSite\web.config
LOG: Using host configuration file: C:\Users\User\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Binding succeeds. Returns assembly from C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Activities\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Activities.dll.
LOG: Assembly is loaded in default load context.
ERR: Unrecoverable error occurred during pre-download check (hr = 0x80131018).

*** Assembly Binder Log Entry  (7/18/2017 @ 8:55:15 AM) ***

2
启用融合日志以定位有问题的程序集(其完整路径),然后使用诸如ILSpy之类的工具分析该程序集并与另一台机器进行比较。 - Lex Li
也许尝试将缺失的程序集 DLL 直接复制到解决方案的输出 (bin) 目录中? - Sebastian Brand
感谢所有的建议,同事离开了几天,但我将在接下来的一周内尝试它们。 - Roger Far
1
如何在.NET中启用程序集绑定失败日志记录(Fusion),之后分析日志 - Mihail Kuznesov
@MihailKuznesov 我已启用它并更新了起始帖子的结果。但我无法弄清是谁造成了这个问题。需要明确的是,System.ServiceModel.Activities实际上并未在该项目中使用,因此它必须由其他东西加载。 - Roger Far
显示剩余4条评论
4个回答

2

您是否正在尝试使用要求不同CLR版本的EXE加载.NET 4程序集?这需要一个app.exe.config文件来强制使用CLR 4。

另外,请确认他已经安装了相同版本的.NET。


@YesMan85:问题和解决方案具体是什么? - one_mile_run
@one_mile_run 请查看我的回答。 - Roger Far

1

1- 关闭Visual Studio

2- 从"C:\WINDOWS\Microsoft.NET\Framework......\Temporary ASP.NET"中删除所有文件

3- 打开VS

4- 重新构建并运行


1
使用Fusion Log帮助后,我发现有1个大小为0kb的文件:C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Activities\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Activities.dll
我从C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.ServiceModel.Activities.dll恢复了该文件,然后它又正常工作了!

1

我遇到了同样的问题,它是随机出现的。只需通过Nuget为该项目安装缺少的软件包。打开“Nuget程序包管理器控制台”并键入以下内容:

PM> Install-Package System.ServiceModel.Activities

然后继续安装软件包,直到没有更多错误为止,最后停止安装。


它在我们其余的机器上运行良好,因此这将是最后的选择,它会大大增加构建时间和构件大小。 - Roger Far

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接