【问题标题】:Visual Studio's IIS Express: Could not load file or assemblyVisual Studio IIS Express:无法加载文件或程序集
【发布时间】:2017-02-11 21:48:18
【问题描述】:

在尝试加载解决方案 (GMap.NET) 时,我遇到了一些问题,我在构建时遇到了一些问题。不过现在不确定这是否重要。

我正在 Visual Studio 2015 中开发一个小型系统,该系统也有一个 MVC 项目。当我通过使用 IIS Express 的 Visual Studio 2015 启动基本网站(或多或少只是初始 MVC 5 模板)时,我收到以下错误消息:

无法加载文件或程序集“System.Web.WebPages.Deployment, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其其中之一依赖关系。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040) 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.IO.FileLoadException:无法加载文件或程序集“System.Web.WebPages.Deployment,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040) [还有更多]

不知道1.0.0.0版本是从哪里来的!我引用的版本是 3.0.0.0...

另外 - 如果我发布到我的本地 IIS - 它可以工作! 我在另外两台计算机上打开了相同的解决方案 - 我可以从 Visual Studio 启动它! 这意味着 - 问题出在我的电脑上 - 而不是我的解决方案......我很确定。

我怀疑机器上出现了问题。也许在 GAC 或一些配置中,但我不知道在哪里......我正在考虑这样的文件(并不是我对它们了解很多):

  • C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config
  • C:\Users\\Documents\IISExpress\config\aspnet.config
  • ???

对于 GAC,似乎没有 System.Web.WebPages.Deployment.dll。并且由于它在“真正的”IIS 上工作,它在那里也必须没问题。

我还尝试删除“C:/Users/#user#/AppData/Local/Temp/Temporary ASP.NET Files/vs/”中的所有文件

这应该缩小到这个范围: - 问题必须与 Visual Studio 和/或 IIS Express - 和/或某些配置文件有关。 - 解决方案中的引用没有问题。 (我用nuget安装MVC)

外汇。在这个文件中,有一个 System.Web.WebPages.Deployment 版本 1.0.0.0 的条目: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config:

<compilation>
  <assemblies>
<!-- <remove assembly="System.Web.WebPages.Deployment, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        <add assembly="System.Web.WebPages.Deployment, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> -->`
...
</compilation>

但我已经尝试取消注释它。没区别……

因此,如果有人可以给我提示在哪里查看...要比较的文件或其他内容,我将不胜感激!

这是我收到的完整信息

“/”应用程序中的服务器错误。

无法加载文件或程序集“System.Web.WebPages.Deployment, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040) 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.IO.FileLoadException:无法加载文件或程序集“System.Web.WebPages.Deployment,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

来源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

程序集加载跟踪:以下信息有助于确定为什么无法加载程序集“System.Web.WebPages.Deployment, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”。

程序集管理器从以下位置加载:C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 在可执行文件C:\Program Files (x86)\IIS Express\iisexpress.exe下运行 --- 详细的错误日志如下。

=== 预绑定状态信息 === 日志:DisplayName = System.Web.WebPages.Deployment,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35 (完全指定) 日志:Appbase = file:///C:/Users/#user#/Source/Workspaces/MySystem/MySystem/Frontend.Web/ 日志:初始 PrivatePath = C:\Users#user#\Source\Workspaces\MySystem\MySystem\Frontend.Web\bin

调用程序集:(未知)。

LOG:此绑定在默认加载上下文中开始。 日志:使用应用程序配置文件:C:\Users#user#\Source\Workspaces\MySystem\MySystem\Frontend.Web**web.config** LOG:使用主机配置文件:C:\Users#user#\Documents\IISExpress\config\aspnet.config 日志:使用机器配置文件来自 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config。 日志:政策后参考:System.Web.WebPages.Deployment,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35 日志:正在尝试下载新的 URL 文件:///C:/Users/#user#/AppData/Local/Temp/Temporary ASP.NET Files/vs/0c78498f/ece65cb2/System.Web.WebPages.Deployment。动态链接库。 日志:尝试下载新的 URL 文件:///C:/Users/#user#/AppData/Local/Temp/Temporary ASP.NET Files/vs/0c78498f/ece65cb2/System.Web.WebPages.Deployment/System.Web .WebPages.Deployment.DLL。 日志:正在尝试下载新的 URL 文件:///C:/Users/#user#/Source/Workspaces/MySystem/MySystem/Frontend.Web/bin/System.Web.WebPages.Deployment.DLL。 警告:比较程序集名称导致不匹配:主要版本 ERR:无法完成程序集的设置(hr = 0x80131040)。探测终止。

堆栈跟踪:

[FileLoadException:无法加载文件或程序集“System.Web.WebPages.Deployment,版本=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040)] System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0 System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +36 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,证据 assemblySecurity,RuntimeAssembly reqAssembly,StackCrawlMark 和 stackMark,IntPtr pPrivHostBinder,布尔 throwOnFileNotFound,布尔 forIntrospection,布尔 suppressSecurityChecks)+152 System.Reflection.RuntimeAssembly.InternalLoad(字符串 assemblyString,证据 assemblySecurity,StackCrawlMark 和 stackMark,IntPtr pPrivHostBinder,Boolean forIntrospection)+77 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +21 System.Reflection.Assembly.Load(String assemblyString) +28 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38

[ConfigurationErrorsException:无法加载文件或程序集“System.Web.WebPages.Deployment,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040)] System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +738 System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +57 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170 System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +92 System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +290 System.Web.Compilation.BuildManager.ExecutePreAppStart() +157 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +531

[HttpException (0x80004005): 无法加载文件或程序集“System.Web.WebPages.Deployment, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040)] System.Web.HttpRuntime.FirstRequestInit(HttpContext 上下文) +9963380 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext 上下文)+101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.6.1586.0

【问题讨论】:

  • 我想知道你机器上的另一个配置是否导致了这个问题。在您注释掉的那些行中,如果您将删除条目位注释掉添加会发生什么?
  • 我现在尝试离开删除部分。现在意味着它只是被注释掉的添加部分:像这样:
  • 您是否在项目中使用了 UseGlobalApplicationHostFile 的真实值?
  • 哇问题现在解决了:还有这个文件:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config - 我在那个文件中,显然应该删除以下条目:'' 在此文件中删除没有帮助:C :\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config 只花了我 3 天的时间才弄清楚......希望有一天它会帮助别人!

标签: c# visual-studio model-view-controller iis-express


【解决方案1】:

解决方案正如我之前的评论中提到的那样 - 因为 .NET Framework 下有两个(x86 和 x64)web.config 文件(对于该版本,4): C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.con‌​fig C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config - 然后,当我删除两个文件中的“System.Web.WebPages.Deployment”条目时,它就可以工作了!

我不确定它们是如何添加到项目中的 - 但我怀疑当我尝试使用 GMap.Net (http://greatmaps.wikia.com/wiki/Main_Page) 时出现问题 - 并且在构建它时遇到了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多