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

标签 c# .net visual-studio asp.net-mvc-4

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

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 更容易,但很好理解它对包恢复的不同之处。

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

关于c# - MVC4 - 无法加载文件或程序集 'Microsoft.Web.Infrastructure...',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48532530/

相关文章:

c# - 从带有索引的数组中获取前 3 个最高值

c# - 32 位环境下 64 位变量的原子增量

.net - 了解 web.config 要点的资源

c# - 采用 DateTimeOffset 的表达式导致 Visual Studio 内部编译器错误

visual-studio - 使用 Visual Studio 测试适配器 boost 单元测试 - 设置工作目录

c# - 根据该行中字段的值隐藏 gridview 中的行

c# - 如何处理 ASP.NET MVC5 应用程序中的请求超时?

c# - 从代码中确定我的进程以哪个用户身份运行

.net - 设计器生成的 DataSet 中的 NULL 值引发我不想要的异常

visual-studio - MAUI 项目中的预处理器指令在哪里设置