ASPNETCOMPILER 错误 ASPCONFIG: 无法加载文件或程序集

ASPNETCOMPILER error ASPCONFIG: Could not load file or assembly

我认为这与 this 不同,原因有几个

  1. 没有升级
  2. 我尝试进行 x86 和 x64 构建,但没有成功
  3. for newtorn.JSON 的当前版本是 4.5

第一次使用 TeamCity。 ASPNETCOMPILIER 无法加载 'Newtonsoft.json'

的程序集

我不知道该如何处理。一些关键点

您可能正在使用 NewtonSoft.Json 的间接多个版本。由于 bin 文件夹中只能有一个版本 and NewtonSoft.Json 是强命名的,你会得到 "Could not load file or assembly" 运行时错误。

解决方案是在您的 ASP.NET 项目中也使用 NewtonSoft.Json 的版本 12,这样就可以加载版本 12。建议使用 NuGet 更新 NewtonSoft.Json。

如果使用其他版本号仍然出现加载错误,那么还要添加到您的配置中(如果不是由 nuget 完成):

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>

我遇到这类问题的次数比我愿意承认的要多,而且我已经这样做了一段时间了,所以不要难过。每次都是小事,真的不应该成为问题。需要耐心,提醒任何开发人员都需要耐心。

  • 在 Web 项目中,更改目标 CPU 并不总是会更改应有的值。这可能是一个错误。但是您可以做的是进入项目文件本身并检查 "any cpu" 的情况,并将任何出现的情况显式更改为 x64.
  • 如果失败,请确保您的所有引用都使用 newtonsoft 库所需的最新版本的框架(以及目标 cpu,如果适用),尽管我认为 4.5 很好。
  • 创建一个空白项目,看看是否可以在那里安装库并使其正确编译,项目中的内容越少,故障排除就越容易。
  • 最后,打开带有详细输出的完整调试,如果您还没有这样做,您可能会得到更多细节。

我发现解决这些问题的最佳方法是通过重新创建我认为存在的条件来隔离问题。创建新项目时,我通常能够评估更改或缺失的内容。在目标 CPU 的情况下,我知道它只能是不匹配,因为当我在一个新项目中测试它时,我的代码 none 存在。