刚刚通过 NuGet 更新了 ImageResizer,无法 运行 应用程序,因为它找不到 BundleAttribute

Just updated ImageResizer via NuGet, can't run app because it can't find BundleAttribute

我只是想更新 Azure 存储,但这样做意味着我需要更新 ImageResizer AzureReader 并更新应用程序以使用 .Net 4.5.2(Azure 站点设置为 .Net 4.6)。现在我得到了最新版本的一切;我已经清理并重建了应用程序。它在本地运行良好,但是当我将它发布到 Azure 时,出现以下错误。我无法加载诊断页面。

Server Error in '/' Application.

Could not load type 'ImageResizer.Util.BundleAttribute' from assembly 'ImageResizer, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null'.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.TypeLoadException: Could not load type 'ImageResizer.Util.BundleAttribute' from assembly 'ImageResizer, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null'.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 


[TypeLoadException: Could not load type 'ImageResizer.Util.BundleAttribute' from assembly 'ImageResizer, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null'.]
   System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type) +0
   System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext) +403
   System.ModuleHandle.ResolveTypeHandle(Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext) +20
   System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments) +315
   System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, Object[] attributes, IList derivedAttributes, RuntimeType& attributeType, IRuntimeMethodInfo& ctor, Boolean& ctorHasParameters, Boolean& isVarArg) +188
   System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent) +1184
   System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeAssembly assembly, RuntimeType caType) +146
   Owin.Loader.DefaultLoader.SearchForStartupAttribute(String friendlyName, IList`1 errors, Boolean& conflict) +180
   Owin.Loader.DefaultLoader.LoadImplementation(String startupName, IList`1 errorDetails) +184
   Microsoft.Owin.Host.SystemWeb.OwinBuilder.GetAppStartup() +138
   Microsoft.Owin.Host.SystemWeb.OwinHttpModule.InitializeBlueprint() +38
   System.Threading.LazyInitializer.EnsureInitializedCore(T& target, Boolean& initialized, Object& syncLock, Func`1 valueFactory) +242
   Microsoft.Owin.Host.SystemWeb.OwinHttpModule.Init(HttpApplication context) +108
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +642
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +353
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +402
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +447

[HttpException (0x80004005): Could not load type 'ImageResizer.Util.BundleAttribute' from assembly 'ImageResizer, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null'.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +684
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +121
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +771

我所有的 ImageResizer 插件都是 4.0.4 版本。

有什么想法吗?

也许您的其他一些依赖项取决于 ImageResizer 4.0.0.0

您可以使用程序集重定向作为解决方法

https://msdn.microsoft.com/en-us/library/7wd6ex19%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

      <dependentAssembly>
        <assemblyIdentity name="someAssembly"
          publicKeyToken="32ab4ba45e0a69a1"
          culture="en-us" />

        <bindingRedirect oldVersion="4.0.0.0" newVersion="4.0.4.0" />
      </dependentAssembly>

您将 v3 ImageResizer 程序集与 v4 ImageResizer 程序集混合使用。删除所有 ImageResizer* dll 文件并重新安装一个版本。

您可以通过在资源管理器中启用 File Version 列并查看您的 /bin 文件夹来验证版本控制错误的严重性。

如您所见,我有 4.2 用于主 DLL,但 3.4 用于其他 DLL。