PostSharp AssemblyLoadException自动加载

本文关键字:加载 AssemblyLoadException PostSharp | 更新日期: 2023-09-27 18:06:07

我正在设置一个新的解决方案,我想使用最新的Autofac(3.4)和PostSharp 3.1.42。在引用NuGet包后,我得到以下错误,我无法弄清楚发生了什么。我从来没有选择Autofac 3.3.0包。

packages.config:

  <package id="Autofac" version="3.4.0" targetFramework="net451" />
  <package id="Autofac.Extras.Multitenant" version="3.1.1" targetFramework="net451" />
  <package id="Autofac.Mvc5" version="3.3.0" targetFramework="net451" />
  <package id="PostSharp" version="3.1.42" targetFramework="net451" />

MSBuild日志:

Error   3   Unhandled exception (3.1.43.0, 32 bit, CLR 4.5, Release): PostSharp.Sdk.CodeModel.AssemblyLoadException: Cannot find assembly 'autofac, version=3.3.0.0, culture=neutral, publickeytoken=17863af14b0044da'. [Version mismatch]
============ PostSharp Assembly Loading Log ===================
LOG: Finding the assembly with binding identity 'autofac, version=3.3.0.0, culture=neutral, publickeytoken=17863af14b0044da'.
LOG: Found file 'D:'web'Project'packages'Autofac.3.4.0'lib'net40'Autofac.dll' with identity 'autofac, version=3.4.0.0, culture=neutral, publickeytoken=17863af14b0044da, processorarchitecture=msil'.
LOG: Reference mismatch for 'D:'web'Project'packages'Autofac.3.4.0'lib'net40'Autofac.dll' [VersionMismatch].
LOG: Probing location 'C:'ProgramData'PostSharp'3.1.43'bin.Release'Autofac.exe' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:'ProgramData'PostSharp'3.1.43'bin.Release'Autofac.dll' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:'ProgramData'PostSharp'3.1.43'bin.Release'Autofac.winmd' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'D:'web'Project'src'Framework'BLL'bin'Autofac.exe' because this directory was explicitly added to the search path [File Not Found].
LOG: Found file 'D:'web'Project'src'Framework'BLL'bin'Autofac.dll' with identity 'autofac, version=3.4.0.0, culture=neutral, publickeytoken=17863af14b0044da, processorarchitecture=msil'. LOG: Reference mismatch for 'D:'web'Project'src'Framework'BLL'bin'Autofac.dll' [VersionMismatch].
LOG: Probing location 'D:'web'Project'src'Framework'BLL'bin'Autofac.winmd' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'D:'web'Project'src'Framework'BLL'obj'O'Autofac.exe' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'D:'web'Project'src'Framework'BLL'obj'O'Autofac.dll' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'D:'web'Project'src'Framework'BLL'obj'O'Autofac.winmd' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:'Program Files (x86)'Reference Assemblies'Microsoft'Framework'.NETFramework'v4.5.1'Autofac.exe' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:'Program Files (x86)'Reference Assemblies'Microsoft'Framework'.NETFramework'v4.5.1'Autofac.dll' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:'Program Files (x86)'Reference Assemblies'Microsoft'Framework'.NETFramework'v4.5.1'Autofac.winmd' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:'Program Files (x86)'Reference Assemblies'Microsoft'Framework'.NETFramework'v4.5.1'Facades'Autofac.exe' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:'Program Files (x86)'Reference Assemblies'Microsoft'Framework'.NETFramework'v4.5.1'Facades'Autofac.dll' because this directory was explicitly added to the search path [File Not Found].
LOG: Probing location 'C:'Program Files (x86)'Reference Assemblies'Microsoft'Framework'.NETFramework'v4.5.1'Facades'Autofac.winmd' because this directory was explicitly added to the search path [File Not Found].
LOG: Looking in GAC for Autofac, Version=3.3.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=x86.
LOG: Looking in GAC for Autofac, Version=3.3.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=msil.
LOG: Looking in GAC for Autofac, Version=3.3.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da.
LOG: The assembly 'autofac, version=3.3.0.0, culture=neutral, publickeytoken=17863af14b0044da' was not found.
===============================================================
   at PostSharp.Sdk.CodeModel.Domain.GetAssembly(IAssemblyName assemblyName, BindingOptions bindingOptions)
   at PostSharp.Sdk.CodeModel.AssemblyRefDeclaration.^5YpB0scd(BindingOptions
_0)
   at 
PostSharp.Sdk.Extensibility.Tasks.MulticastAttributeTask.^SgrhoGlQ(AssemblyRefDeclaration
_0)
   at PostSharp.Sdk.Extensibility.Tasks.MulticastAttributeTask.^+GwnKh4ZYHu3() at PostSharp.Sdk.Extensibility.Tasks.MulticastAttributeTask.Execute()  at PostSharp.Sdk.Extensibility.Project.ExecutePhase(String phase)    at PostSharp.Sdk.Extensibility.Project.Execute()    at PostSharp.Hosting.PostSharpObject.ExecuteProjects()    at PostSharp.Hosting.PostSharpObject.InvokeProject(ProjectInvocation projectInvocation).   D:'web'Project'src'Framework'BLL'BLL.csproj BLL

有人知道这是从哪里来的,我怎么能解决这个问题吗?在过去,我用Autofac 3.3.0创建了一些项目。这可能是一些缓存吗?PostSharp和autoface不在我的GAC中

PostSharp AssemblyLoadException自动加载

好了,我已经找到答案了。不知何故,PostSharp在错误的位置寻找错误的组装。只需将此添加到您的csproj文件来修复它:

<PostSharpHostConfigurationFile>$(SolutionDir)path'to'your'web.config</PostSharpHostConfigurationFile>