Pho*_*ius 3 .net c# servicestack
我正在运行 Visual Studio 2017 15.6.3。
我有一个 .NET Standard 2.0 DLL 项目,其中包含用于 ServiceStack 的请求和响应类。Request 类实现 IReturn<>。
我有一个 .NET Core 2.0 控制台 EXE 项目,它引用了 .NET Standard DLL。此 EXE 使用 ServiceStack JsonServiceClient 向 ServiceStack 服务发送请求。它编译并运行良好。
我添加了一个 .NET Framework 4.6.1 控制台 EXE 项目,该项目也引用了 .NET Standard 2.0 DLL。它必须是一个框架应用程序,因为它引用了与 Core 或 Standard 不兼容的其他 DLL。该 EXE 使用 ServiceStack JsonServiceClient 向 ServiceStack 服务发送请求,与 .NET Core EXE 完全一样,但该程序无法编译。Framework 4.6.1 应该支持 .NET Standard 2.0 DLL,但由于某种原因它与 IReturn<> 接口有冲突。
var extentRequest = new ExtentRequest { ... };
using (var client = new JsonServiceClient(baseUrl))
{
return client.Post(extentRequest);
}
Run Code Online (Sandbox Code Playgroud)
返回的错误是:“类型 'IReturn<>' 在未引用的程序集中定义。您必须添加对程序集 'ServiceStack.Interfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null' 的引用。 ”
我想不出它不起作用的任何原因:
我认为问题是框架和标准版本之间的某种不匹配。谁能告诉我为什么我会收到这个错误?
您不能在.NET Core或.NET Standard项目中与 .NET Framework 依赖项共享.NET Framework .dll,反之亦然。
大多数 ServiceStack NuGet 包都包含 .NET v4.5 和 .NET Standard 2.0 版本:
net45- 包含对运行ASP.NET Web 或自托管HttpListener应用程序主机的支持netstandard2.0- 包含仅在ASP.NET Core应用程序主机上运行的支持只有 .NET v4.5 版本包含对在经典 ASP.NET或 SelfHost HttpListener 主机(即AspNetRequest/ AspNetResponse)上托管的支持。您不能在经典的 ASP.NET Web 项目中使用 ServiceStack 上的 .NET Standard 构建,因为构建实际上不包含所需的依赖项和功能 - 这在 .NET Standard 2.0 中不可用(仅涵盖运行ASP.NET Core应用程序) .
有两种解决方案可以在 .NET Framework v4.6.1+ 和 .NET Standard / .NET Core 项目中共享同一个项目:
为了能够.dll与 .NET Framework 项目共享相同的内容,您需要仅引用 .NET Standard.Core包,以便在安装 NuGet 包时您的.NET v4.6.1+项目将引用与 .NET Standard 相同的 .NET Standard 2.0 dll。 NET Standard 或 .NET Core 项目正在使用。
另一种方法是维护创建 .NET Framework 和 .NET Standard 版本的多目标项目。这是Hello Mobile Shared Gateway项目用于支持 .NET Framework 和 Mobile .NET Standard 客户端的方法,而ServiceStack Server.Common 项目用于相同的 ServiceStack Server 实现以用于: