C#学习教程:为什么在VIsualStudio2017中使用ServiceStack时出现错误“类型‘IReturn’在未引用的程序集中定义”我正在运行VisualStudio201715.6.3。我有一个.NETStandard2.0DLL项目包含与ServiceStack一起使用的Request和Response类。Request类实现了IReturn。我有一个.NETCore2.0控制台EXE项目,它引用了一个.NETStandardDLL。这个EXE使用ServiceStackJsonServiceClient将请求发送到ServiceStack服务。它编译并工作正常。我添加了一个.NETFramework4.6.1控制台EXE项目,它也引用了一个.NETStandard2.0DLL。它必须是一个框架应用程序,因为它引用了与核心或标准不兼容的其他DLL。此EXE使用ServiceStackJsonServiceClient将请求发送到与.NETCoreEXE完全相同的ServiceStack服务,但此程序无法编译。Framework4.6.1应该支持.NETStandard2.0DLL,但由于某种原因它会发生冲突与IReturn接口。varextentRequest=newExtentRequest{...};使用(varclient=newJsonServiceClient(baseUrl)){returnclient.Post(extentRequest);}返回的错误是:“类型‘IReturn’在未被引用的程序集中定义。您必须添加对程序集‘ServiceStack.Interfaces,Version=5.0.0.0,Culture=neutral,PublicKeyToken=null’的引用。“我想不出这不起作用的任何原因:当我查看项目的引用列表时,我看到ServiceStack.Interfaces,它的属性显示它是5.0.0.0版本。我可以在框架可执行项目代码中使用它“PeekDefinition”并通过继承链找到IReturn,因此它知道类型。所有三个项目都使用从NuGet获得的ServiceStack版本5.0.2。所有项目都针对x64配置和编译。我认为问题出在框架之间和标准版本存在某种不匹配。谁能告诉我为什么会出现此错误?您不能在.NETCore或.NETStandard项目中与.NETFramework依赖项共享.NETFramework.dll,反之亦然。大多数ServiceStackNuGet包都包含.NETv4.5和.NETStandard2.0版本:只有.NETv4.5版本支持在ClassicASP.NET或SelfHostHttpListener主机(即AspNetRequest/AspNetResponse)上托管。您不能在Classic上托管在ServiceStack上构建的ASP.NET.NETStandard用于Web项目,因为该构建实际上不包含所需的依赖项和功能——这在.NETStandard2.0中不可用(仅涵盖运行ASP.NETCore应用程序)。是在.NETFrameworkv4.6.1+和.NETStandard/.NETCore项目中共享同一项目的两种解决方案:仅引用.Core.NETStandard包要能够与.NETFramework项目共享相同的.dll,您需要引用.NETStandard.Core包,以便在安装NuGet包时,.NETv4.6.1+项目引用与您的.NETStandard或.NETCore项目正在使用的相同的.NETStandard2.0dll。创建多目标.NETFramework和.NETStandard2.0项目另一种方法是维护同时创建.NETFramework和.NETStandard版本的多目标项目。这就是HelloMobileSharedGateway项目用于支持.NETFramework和Mobile.NETStandard客户端以及ServiceStackServer的方式。Common项目用于相同的ServiceStackServer实现:'isdefinedinanunreferencedassembly'使用所有内容ServiceStackinVIsualStudio2017分享,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——本文来自网络收集,不代表立场,如涉及侵权请点击维权联系管理员删除如需转载请注明出处:
