首页 文章

升级到Core 2.1和Framework 4.7.2后,为什么我们在ServiceStack中收到TypeIntializer Exception?

提问于
浏览
3

我们有一个Visual Studio C#解决方案,包括.NET标准类库,.NET Framework应用程序(因为它们使用在Framework上编写的第三方引用)和.NET Core应用程序 .

以前这些项目使用:

  • .NET Standard 2.0

  • .NET Core 2.0

  • .NET Framework 4.6.1

  • ServiceStack 5.1.0

我们不得不做一些奇怪的事情 . 我们有.NET Core应用程序托管ServiceStack服务,我们有.NET Framework应用程序,它们是ServiceStack客户端,并且两个应用程序都引用了包含ServiceStack的Request对象的.NET Standard类库 . 遗憾的是,ServiceStack模块的Framework和Core版本不兼容,特别是在Interfaces组件中 . 所以Framework应用程序必须引用ServiceStack . * . 核心DLL(所以mythz告诉我们它解决了问题) .

现在我们已将代码升级到

  • .NET Standard 2.0

  • .NET Core 2.2

  • .NET Framework 4.7.2

  • ServiceStack 5.4.0

代码编译得很好,但是当我们运行它时,我们无法在Framework应用程序中实例化JsonServiceClient .

using (var client = new JsonServiceClient(_config.PropagationUrl))
  {
     ...
  }

上面代码的第一行引发以下异常:

System.TypeInitializationException HResult = 0x80131534 Message ='ServiceStack.ServiceClientBase'的类型初始值设定项引发异常 . Source = ServiceStack.Client StackTrace:ServiceStack.ServiceClientBase..ctor()at ServiceStack.JsonServiceClient..ctor(String baseUri)at at Stitch.Logic.Coverage.ExtentsActor.PostCellExtentRequest(CellExtentsRequest request)in C:\ Work \ TMobile \ stitch \ src \ Stitch.Logic \ Coverage \ Actors \ ExtentsActor.cs:第75行

内部异常1:TypeInitializationException:'ServiceStack.Text.Env'的类型初始值设定项引发异常 .

内部异常2:FileNotFoundException:无法加载文件或程序集'System.Runtime.InteropServices.RuntimeInformation,Version = 4.0.2.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一 . 该系统找不到指定的文件 .

内部异常3:FileNotFoundException:无法加载文件或程序集'System.Runtime.InteropServices.RuntimeInformation,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一 . 该系统找不到指定的文件 .

任何人都可以告诉我为什么,更重要的是,如何解决这个问题?

1 回答

  • 2

    这是一个约束性问题,首先尝试adding or removing the Assembly binding information for System.Runtime.InteropServices.RuntimeInformation

    <dependentAssembly>
      <assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
    </dependentAssembly>
    

    如果没有解决它,请尝试删除所有ServiceStack NuGet包和程序集绑定,删除 /packages/bin/obj 文件夹并再次添加ServiceStack NuGet包 .

相关问题