MVC4 - 无法加载文件或程序集“Microsoft.Web.Infrastructure...”

mch*_*che 1 .net c# 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
Run Code Online (Sandbox Code Playgroud)

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

我遇到了这个 S/O 帖子,但我无法完全尝试接受的答案,因为当我尝试保存更改时,它会Copy Local继续更改回False原状。此外,另一个 S/O 帖子似乎表明我不应该篡改Copy Local属性,以便阻止我设置Copy Local为的行为True似乎是故意的(或者可能表明“在全局程序集缓存中找到了程序集”。

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

Roh*_*han 5

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

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

Update-Package -ProjectName "YourProjectName" -Id Microsoft.Web.Infrastructure -Reinstall
Run Code Online (Sandbox Code Playgroud)

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

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

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

只需执行 -Reinstall 就更容易了,但很高兴了解它与包还原的不同之处。

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