【问题标题】:AssemblyLoadException in PostSharp on release build发布版本时 PostSharp 中的 AssemblyLoadException
【发布时间】:2014-09-11 22:54:19
【问题描述】:

我有几个项目都包含 json.net 6.0.3 NuGet 包。当我添加:

using Newtonsoft.Json;

构建时出现以下错误:

1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:未处理的异常 (3.1.48.0,32 位,CLR 4.5,发布): PostSharp.Sdk.CodeModel.AssemblyLoadException:找不到程序集 'newtonsoft.json,版本=4.5.0.0,文化=中性, publickeytoken=30ad4fe6b2a6aeed'。 [版本不匹配] 1>F:\TwinkyTalk\TwinkyTalk.csproj : 错误 PS0099: ============ PostSharp 程序集加载日志 ==================== 1>F:\TwinkyTalk\TwinkyTalk.csproj : 错误 PS0099: LOG: 查找 具有绑定标识'newtonsoft.json,版本=4.5.0.0,的程序集, 文化=中性,publickeytoken=30ad4fe6b2a6aeed'。 1>F:\TwinkyTalk\TwinkyTalk.csproj : 错误 PS0099: LOG: 找到文件 'F:\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll' 与 身份'newtonsoft.json,版本=6.0.0.0,文化=中性, publickeytoken=30ad4fe6b2a6aeed,处理器架构=msil'。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志:参考 不匹配 'F:\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll' [版本不匹配]。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099: LOG:探测位置 'C:\ProgramData\PostSharp\3.1.48\bin.Release\Newtonsoft.Json.exe' 因为此目录已明确添加到搜索路径 [File 未找到]。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志: 探测位置 'C:\ProgramData\PostSharp\3.1.48\bin.Release\Newtonsoft.Json.dll' 因为此目录已明确添加到搜索路径 [File 未找到]。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志: 探测位置 'C:\ProgramData\PostSharp\3.1.48\bin.Release\Newtonsoft.Json.winmd' 因为此目录已明确添加到搜索路径 [File 未找到]。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志: 探测位置'F:\bin\release\TwinkyTalk\Newtonsoft.Json.exe' 因为此目录已明确添加到搜索路径 [File 未找到]。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志: 找到文件 'F:\bin\release\TwinkyTalk\Newtonsoft.Json.dll' 与 身份'newtonsoft.json,版本=6.0.0.0,文化=中性, publickeytoken=30ad4fe6b2a6aeed,处理器架构=msil'。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志:参考 'F:\bin\release\TwinkyTalk\Newtonsoft.Json.dll' 不匹配 [版本不匹配]。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099: LOG:探测位置 'F:\bin\release\TwinkyTalk\Newtonsoft.Json.winmd' 因为这个 目录已显式添加到搜索路径 [未找到文件]。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志:探测 位置 'F:\TwinkyTalk\obj\Release\Newtonsoft.Json.exe' 因为这个 目录已显式添加到搜索路径 [未找到文件]。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志:探测 位置 'F:\TwinkyTalk\obj\Release\Newtonsoft.Json.dll' 因为这个 目录已显式添加到搜索路径 [未找到文件]。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志:探测 位置 'F:\TwinkyTalk\obj\Release\Newtonsoft.Json.winmd' 因为 此目录已明确添加到搜索路径 [File Not 成立]。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志:探测 位置 'C:\Program Files (x86)\Reference 程序集\Microsoft\Framework.NETFramework\v4.5.1\Newtonsoft.Json.exe' 因为此目录已明确添加到搜索路径 [File 未找到]。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志: 探测位置 'C:\Program Files (x86)\Reference 程序集\Microsoft\Framework.NETFramework\v4.5.1\Newtonsoft.Json.dll' 因为此目录已明确添加到搜索路径 [File 未找到]。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志: 探测位置 'C:\Program Files (x86)\Reference 程序集\Microsoft\Framework.NETFramework\v4.5.1\Newtonsoft.Json.winmd' 因为此目录已明确添加到搜索路径 [File 未找到]。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志: 探测位置 'C:\Program Files (x86)\Reference 程序集\Microsoft\Framework.NETFramework\v4.5.1\Facades\Newtonsoft.Json.exe' 因为此目录已明确添加到搜索路径 [File 未找到]。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志: 探测位置 'C:\Program Files (x86)\Reference 程序集\Microsoft\Framework.NETFramework\v4.5.1\Facades\Newtonsoft.Json.dll' 因为此目录已明确添加到搜索路径 [File 未找到]。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志: 探测位置 'C:\Program Files (x86)\Reference 程序集\Microsoft\Framework.NETFramework\v4.5.1\Facades\Newtonsoft.Json.winmd' 因为此目录已明确添加到搜索路径 [File 未找到]。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志: 在 GAC 中寻找 Newtonsoft.Json,版本 = 4.5.0.0,文化 = 中性, PublicKeyToken=30ad4fe6b2a6aeed,处理器架构=x86。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志:查看 GAC 对于 Newtonsoft.Json,版本=4.5.0.0,文化=中性, PublicKeyToken=30ad4fe6b2a6aeed,处理器架构=msil。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:日志:查看 GAC 对于 Newtonsoft.Json,版本=4.5.0.0,文化=中性, PublicKeyToken=30ad4fe6b2a6aeed。 1>F:\TwinkyTalk\TwinkyTalk.csproj: 错误 PS0099:日志:程序集 'newtonsoft.json,版本 = 4.5.0.0, 文化=中性,publickeytoken=30ad4fe6b2a6aeed' 未找到。 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099: ==================================================== ============= 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:在 PostSharp.Sdk.CodeModel.Domain.GetAssembly(IAssemblyName 程序集名称, BindingOptions bindingOptions) 1>F:\TwinkyTalk\TwinkyTalk.csproj : 错误 PS0099:在 PostSharp.Sdk.CodeModel.AssemblyRefDeclaration.^5YpB0scd(BindingOptions _0) 1>F:\TwinkyTalk\TwinkyTalk.csproj : 错误 PS0099: 在 PostSharp.Sdk.Extensibility.Tasks.MulticastAttributeTask.^SgrhoGlQ(AssemblyRefDeclaration _0) 1>F:\TwinkyTalk\TwinkyTalk.csproj : 错误 PS0099: 在 PostSharp.Sdk.Extensibility.Tasks.MulticastAttributeTask.^+GwnKh4ZYHu3() 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:在 PostSharp.Sdk.Extensibility.Tasks.MulticastAttributeTask.Execute() 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:在 PostSharp.Sdk.Extensibility.Project.ExecutePhase(字符串阶段) 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:在 PostSharp.Sdk.Extensibility.Project.Execute() 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:在 PostSharp.Hosting.PostSharpObject.ExecuteProjects() 1>F:\TwinkyTalk\TwinkyTalk.csproj:错误 PS0099:在 PostSharp.Hosting.PostSharpObject.InvokeProject(ProjectInvocation 项目调用)。

我无法在项目中找到对“'newtonsoft.json, version=4.5.0.0”的任何引用,不知道为什么要查找它。

我尝试将“构建主机”PostSharp 项目属性设置为托管,但仍然遇到相同的异常。

【问题讨论】:

    标签: json.net postsharp


    【解决方案1】:

    当某些 3 方库引用旧版本的程序集(本例中为 Newtonsoft.Json)时,通常会发生这种情况。通过在 web.config/app.config 文件中指定绑定重定向来解决问题。

    <dependentAssembly>
      <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
      <bindingRedirect oldVersion="0.0.0.0-6.0.3.0" newVersion="6.0.3.0"/>
    </dependentAssembly>
    

    但是,您还需要告诉 PostSharp 在哪里寻找绑定重定向配置。您可以通过在 *.csproj 文件中设置 PostSharpHostConfigurationFile 属性来做到这一点:

    <PropertyGroup>
      <PostSharpHostConfigurationFile>web.config</PostSharpHostConfigurationFile>
    </PropertyGroup>
    

    还有一个关于 SO (PostSharp AssemblyLoadException Autofac) 和 relevant blog post 的类似问题。

    【讨论】:

    • 嗨,亚历克斯,感谢您的帮助。我尝试了这两种方法,但它们并没有为我解决问题,但它们引导我朝着正确的方向前进。我已经添加了最终解决方案,以防其他人遇到同样的问题。
    【解决方案2】:

    事实证明,当异常来自 PostSharp 时,补救措施是更新所有 NuGet 包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-26
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      相关资源
      最近更新 更多