这是我第一次尝试启动的旧项目。我收到此错误:
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/