我打開Visual Studio中的視圖編譯時出現問題。我有一個相當標準的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的:System.Web.Mvc 5.2.2.0與5.2.3.0版本問題與aspnet_compiler
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。但是,我增加了一個程序集綁定重定向到應用程序的根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>
在努力,試圖找到問題的底部,我已經打開了診斷構建日誌
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的意見,它抱怨:,其中26萬線的日誌,其中包括北吐出來。無論我在哪裏放置程序集綁定重定向(應用程序的根Web.config,視圖文件夾中的Web.config),aspnet_compiler.exe都不希望尊重它。並且,似乎無法讓aspnet_compiler.exe輸出任何關於它實際正在做什麼(沒有日誌詳細級別設置...)
我編譯視圖時得到的所有信息,有很多關於版本的警告5.2.2.0 vs System.Web.Mvc 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的警告,但我覺得就像駕駛我的眼睛半閉。任何幫助表示讚賞。
嘗試在web.config的Compilation標籤中添加所需的程序集版本。 編譯>' –
vendettamit
如果你指的是'Web.config'在瀏覽文件夾時,已經有... –
和什麼有關主的web.config?你有嘗試過嗎? –