我们有一个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 回答
这是一个约束性问题,首先尝试adding or removing the Assembly binding information for System.Runtime.InteropServices.RuntimeInformation:
如果没有解决它,请尝试删除所有ServiceStack NuGet包和程序集绑定,删除
/packages
,/bin
和/obj
文件夹并再次添加ServiceStack NuGet包 .