gpt4 book ai didi

c# - System.Web.Mvc 5.2.2.0 与 aspnet_compiler 的 5.2.3.0 版本控制问题

转载 作者:太空狗 更新时间:2023-10-29 23:37:51 26 4
gpt4 key购买 nike

在 Visual Studio 中打开 View 编译时遇到问题。我有一个相当标准的 ASP.NET MVC 5 应用程序,其中有很多引用资料。我引用了 System.Web.Mvc 5.2.3.0(目前最新),但编译似乎有问题 v.5.2.2.0 vs 5.2.3.0。出色的工具 AsmSpy ( https://github.com/mikehadlow/AsmSpy) 告诉我哪些程序集引用了哪个版本的 System.Web.Mvc:

Reference: System.Web.Mvc
5.1.0.0 by Autofac.Integration.Mvc
5.0.0.0 by Glimpse.Mvc5
5.0.0.0 by Microsoft.Web.Mvc
3.0.0.0 by Mindscape.Raygun4Net.Mvc
5.2.3.0 by Myrepo.Web.Common
5.2.3.0 by MyApp
5.2.2.0 by Thinktecture.IdentityModel.Owin.ResourceAuthorization.Mvc

因此,有罪的是 Thinktecture.IdentityModel.Owin.ResourceAuthorization.Mvc。但是,我已将程序集绑定(bind)重定向添加到应用程序的根 web.config,如下所示:

  <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<!-- lots more -->
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
<!-- lots more -->
</assemblyBinding>
</runtime>

为了试图找出问题的根源,我打开了诊断构建日志记录,它吐出超过 260,000 行日志,包括:

16>  Unified primary reference "System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35". (TaskId:183)
16> Using this version instead of original version "5.1.0.0" in "C:\Users\ErikBrandstadmoen\Source\Repos\myrepo\packages\Autofac.Mvc5.3.3.4\lib\net45\Autofac.Integration.Mvc.dll" because of a binding redirect entry in the file "obj\Debug\MyWeb.csproj.App.config". (TaskId:183)
16> Using this version instead of original version "5.0.0.0" in "C:\Users\ErikBrandstadmoen\Source\Repos\myrepo\packages\Glimpse.Mvc5.1.5.3\lib\net45\Glimpse.Mvc5.dll" because of a binding redirect entry in the file "obj\Debug\MyWeb.csproj.App.config". (TaskId:183)
16> Using this version instead of original version "3.0.0.0" in "C:\Users\ErikBrandstadmoen\Source\Repos\myrepo\packages\Mindscape.Raygun4Net.Mvc.5.1.0\lib\net40\Mindscape.Raygun4Net.Mvc.dll" because of a binding redirect entry in the file "obj\Debug\MyWeb.csproj.App.config". (TaskId:183)
16> Using this version instead of original version "5.2.2.0" in "C:\Users\ErikBrandstadmoen\Source\Repos\myrepo\packages\Thinktecture.IdentityModel.Owin.ResourceAuthorization.Mvc.2.0.0\lib\net45\Thinktecture.IdentityModel.Owin.ResourceAuthorization.Mvc.dll" because of a binding redirect entry in the file "obj\Debug\MyWeb.csproj.App.config". (TaskId:183)
16> Using this version instead of original version "5.0.0.0" in "C:\Users\ErikBrandstadmoen\Source\Repos\myrepo\Web\Common\bin\Debug\Microsoft.Web.Mvc.dll" because of a binding redirect entry in the file "obj\Debug\MyWeb.csproj.App.config". (TaskId:183)
16> Resolved file path is "C:\Users\ErikBrandstadmoen\Source\Repos\myrepo\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll". (TaskId:183)
16> Reference found at search path location "{HintPathFromItem}". (TaskId:183)
16> For SearchPath "{CandidateAssemblyFiles}". (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Agent.AttributeFilter.dll", but its name "NewRelic.Agent.AttributeFilter" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Agent.Configuration.dll", but its name "NewRelic.Agent.Configuration" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Agent.Core.dll", but its name "NewRelic.Agent.Core" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Agent.LabelsService.dll", but its name "NewRelic.Agent.LabelsService" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Agent.LazyMap.dll", but its name "NewRelic.Agent.LazyMap" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Collections.dll", but its name "NewRelic.Collections" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Core.dll", but its name "NewRelic.Core" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Dispatchers.dll", but its name "NewRelic.Dispatchers" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Memoization.dll", but its name "NewRelic.Memoization" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Providers.CallStack.AsyncLocal.dll", but its name "NewRelic.Providers.CallStack.AsyncLocal" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Providers.TransactionContext.Asp.dll", but its name "NewRelic.Providers.TransactionContext.Asp" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Providers.TransactionContext.Default.dll", but its name "NewRelic.Providers.TransactionContext.Default" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Providers.TransactionContext.Wcf3.dll", but its name "NewRelic.Providers.TransactionContext.Wcf3" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Providers.Wrapper.Asp35.dll", but its name "NewRelic.Providers.Wrapper.Asp35" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Providers.Wrapper.HttpClient.dll", but its name "NewRelic.Providers.Wrapper.HttpClient" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Providers.Wrapper.MongoDb.dll", but its name "NewRelic.Providers.Wrapper.MongoDb" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Providers.Wrapper.Mvc3.dll", but its name "NewRelic.Providers.Wrapper.Mvc3" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Providers.Wrapper.NServiceBus.dll", but its name "NewRelic.Providers.Wrapper.NServiceBus" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Providers.Wrapper.Wcf3.dll", but its name "NewRelic.Providers.Wrapper.Wcf3" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Providers.Wrapper.WebApi1.dll", but its name "NewRelic.Providers.Wrapper.WebApi1" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Providers.Wrapper.WebApi2.dll", but its name "NewRelic.Providers.Wrapper.WebApi2" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Providers.Wrapper.WebOptimization.dll", but its name "NewRelic.Providers.Wrapper.WebOptimization" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Providers.Wrapper.WebServices.dll", but its name "NewRelic.Providers.Wrapper.WebServices" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Reflection.dll", but its name "NewRelic.Reflection" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.SystemExtensions.dll", but its name "NewRelic.SystemExtensions" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.SystemInterfaces.dll", but its name "NewRelic.SystemInterfaces" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Testing.Assertions.dll", but its name "NewRelic.Testing.Assertions" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.Trie.dll", but its name "NewRelic.Trie" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.TypeInstantiation.dll", but its name "NewRelic.TypeInstantiation" didn't match. (TaskId:183)
16> Considered "newrelic\Extensions\NewRelic.WeakActions.dll", but its name "NewRelic.WeakActions" didn't match. (TaskId:183)
16> Considered "newrelic\NewRelic.Agent.Core.dll", but its name "NewRelic.Agent.Core" didn't match. (TaskId:183)
16> Considered "newrelic\NewRelic.Agent.Extensions.dll", but its name "NewRelic.Agent.Extensions" didn't match. (TaskId:183)
16> Considered "newrelic\NewRelic.Profiler.dll", but its name "NewRelic.Profiler" didn't match. (TaskId:183)
16> Found related file "C:\Users\ErikBrandstadmoen\Source\Repos\myrepo\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.xml". (TaskId:183)
16> The ImageRuntimeVersion for this reference is "v4.0.30319". (TaskId:183)

但是,当我使用 aspnet_compiler.exe 编译 View 时,它仍然会提示。而且无论我将程序集绑定(bind)重定向放在哪里(Applications 的根 Web.config,Views 文件夹中的 Web.config),aspnet_compiler.exe 都不想遵守它。而且,似乎不可能让 aspnet_compiler.exe 输出任何关于它实际在做什么的信息(没有日志详细级别设置......)

编译 View 时,我得到的只是关于 System.Web.Mvc 5.2.2.0 版和 5.2.3.0 版的大量警告:

16>ASPNETCOMPILER : warning CS1702: Assuming assembly reference 'System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' matches 'System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35', you may need to supply runtime policy
16>ASPNETCOMPILER : warning CS1702: Assuming assembly reference 'System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' matches 'System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35', you may need to supply runtime policy
16>ASPNETCOMPILER : warning CS1702: Assuming assembly reference 'System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' matches 'System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35', you may need to supply runtime policy
(lots of more lines)

16>Done executing task "AspNetCompiler". (TaskId:234)
16>Done building target "MvcBuildViews" in project "MyWeb.csproj".: (TargetId:376)
16>Target "Build: (TargetId:377)" in file "C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets" from project "C:\Users\ErikBrandstadmoen\Source\Repos\myrepo\Web\MyWeb\MyWeb.csproj" (target "Rebuild" depends on it):
16>Done building target "Build" in project "MyWeb.csproj".: (TargetId:377)
16>Target "AfterRebuild: (TargetId:378)" in file "C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets" from project "C:\Users\ErikBrandstadmoen\Source\Repos\myrepo\Web\MyWeb\MyWeb.csproj" (target "Rebuild" depends on it):
16>Done building target "AfterRebuild" in project "MyWeb.csproj".: (TargetId:378)
16>Target "Rebuild: (TargetId:379)" in file "C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets" from project "C:\Users\ErikBrandstadmoen\Source\Repos\myrepo\Web\MyWeb\MyWeb.csproj" (entry point):
16>Done building target "Rebuild" in project "MyWeb.csproj".: (TargetId:379)

有没有人知道在哪里可以继续进行故障排除?我当然可以忽略CS1702警告,但我觉得这就像半闭着眼睛开车一样。感谢您的帮助。

最佳答案

我不知道这是否有帮助,但在我注意到我的主要“projectname.csproj”已将其 Mvc 5.2.3.0 版本设置为私有(private)和我的“projectname.csproj”之前,我遇到了与您相同的问题。 infrastructure.csproj"已将其版本设置为 5.2.2.0。我只能假设这是我的版本问题的主要原因。

这是我的“projectname.csproj”在我更改之前的样子......

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

...这是修改后的样子...

<Reference Include="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">    
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath>
</Reference>

这样做之后,我重建了我的解决方案并调试了我的项目名称。从那时起,我就再也没有遇到过任何问题。

关于c# - System.Web.Mvc 5.2.2.0 与 aspnet_compiler 的 5.2.3.0 版本控制问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32852616/

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