Skip to main content
 首页 » 编程设计

c#之MVC4之无法加载文件或程序集 'Microsoft.Web.Infrastructure...'

2024年02月04日35zhenyulu

这是我第一次尝试启动的旧项目。我收到此错误:

Could not load file or assembly 'Microsoft.Web.Infrastructure,  
Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of  
its dependencies. The system cannot find the file specified 

VS2017 上的 MVC4 (dotnet 4.5) 应用程序。

我遇到了 this S/O post但我无法完全尝试接受的答案,因为当我尝试保存更改时,Copy Local 继续更改回 False。此外,this other S/O post似乎表明我不应该篡改 Copy Local 属性,因此阻止我将 Copy Local 设置为 True 的行为似乎是故意的(或者可能指示“程序集在全局程序集缓存中找到”。

为什么我不能设置Copy Local字段?关于如何在 VS2017 中尝试将 Copy Local 更新为 True 有什么想法吗?

请您参考如下方法:

在 VS2015 上的新 Windows 10 机器上使用现有的旧项目遇到了类似的问题。 包管理器 3.4.4。 已启用恢复包。

恢复似乎没有按预期进行。 必须在包管理器命令行上运行以下命令

Update-Package -ProjectName "YourProjectName" -Id Microsoft.Web.Infrastructure -Reinstall 

如果需要,请更改上述命令以包含“-Version”选项以针对特定版本。省略 -Version 和 -Reinstall 会将包更新到最新版本。 这将以下行添加到我的解决方案文件中 恢复没有做。

<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
  <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath> 
  <Private>True</Private> 
</Reference> 

只需将上述元素添加到项目文件中的 ItemGroup 部分也可以解决问题,前提是 ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll 存在。

只执行 -Reinstall 更容易,但很好理解它对包恢复的不同之处。

可能以前版本的包管理器在最初添加解决方案文件时没有将上述更改添加到现在需要的解决方案文件中。