gpt4 book ai didi

c# - 将 ASP.NET MVC 从 4 升级到 5 时出现奇怪的错误

转载 作者:太空狗 更新时间:2023-10-30 00:49:49 27 4
gpt4 key购买 nike

我正在将我的项目从 MVC 4 转换为 MVC 5(并将 .Net 4 转换为 .Net 4.5.2,这是变化的真正驱动力。)

当我运行其中一个页面时出现此错误(我添加的空格以便于阅读)

[A]System.Web.WebPages.Razor.Configuration.HostSection cannot be cast to [B]System.Web.WebPages.Razor.Configuration.HostSection.

Type A originates from 'System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_1.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'.

Type B originates from 'System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\studentportal3g\2204bad2\aece9b3b\assembly\dl3\ad80387c\91adbf51_fc73d101\System.Web.WebPages.Razor.dll'.

当我第一次看到这个时,很简单!没那么多:)

我检查了每个项目并确保它的版本升级到 MVC 5,它具有 System.Web.WebPages.Razor.dll 的 3.0.0.0 版本。

清理重建,仍然出现错误。没问题,我会删除缓存的临时文件。

清理重建,问题仍然存在。我回去,在每个引用它的项目的引用中手动检查 System.Web.WebPages.Razor.dll 的每个版本。我检查了我复制 dll 的文件夹以手动引用它们,但它不在那里。

如果我的解决方案不包含 DLL 的副本或对 DLL 的引用,并且我手动删除了“C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary”中的缓存文件夹ASP.NET

Files\studentportal3g...

旧的坏dll来自哪里?我该如何解决这个错误?我如何防止它再次发生?

谢谢,

埃里克-

最佳答案

Visual Studio 是一个很棒的工具,但在升级依赖项时它并不总是做出正确的选择,也不支持 MSBuild 中可用的所有可能选项。每当您发现自己陷入这样的困境时,您应该手动查看并(如有必要)编辑您的 .csproj文件以解决它。

问题不在于您的文件存在于 GAC 中或它尚未被 NuGet 安装,问题很可能是您的项目文件之一仍然引用旧版本的 System.Web.WebPages.Razor版本 1.0.0.0 , 你需要找到所有对它的引用并将它们更改为 3.0.0.0相应地。

  1. 在解决方案资源管理器中右键单击您的项目节点,然后单击 Unload Project .
  2. 再次右键单击项目节点并单击 Edit <projectName>.csproj .
  3. 在文件中搜索对 System.Web.WebPages.Razor 的引用并更新版本和 HintPath相应地(如下所示)。确保 HintPath你使用的实际上指向一个现有文件。
  4. 对解决方案中的所有依赖项目(以及不属于解决方案的 DLL 中的任何项目)重复这些步骤。

旧引用

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

更新引用

<Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.0.0\lib\net45\System.Web.WebPages.Razor.dll</HintPath>
</Reference>

您还应该查看 web.config/Views/web.config文件以确保它们没有引用此程序集的任何旧版本。

NOTE: If the above instructions don't solve your issue, the issue likely is outside of your solution. Most likely there is a 3rd party library that is referencing the old version of the file somewhere. If so, you could attempt to get an updated version of the DLL.

您可能还想查看 this question .

关于c# - 将 ASP.NET MVC 从 4 升级到 5 时出现奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35990190/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com