如何在 .NET Standard 项目中“添加服务引用”
Posted
技术标签:
【中文标题】如何在 .NET Standard 项目中“添加服务引用”【英文标题】:How to "Add Service Reference" in .NET Standard project 【发布时间】:2018-05-04 21:42:47 【问题描述】:我想在 .NET Standard 项目中执行“添加服务引用”。(Visual Studio 2017)
为了使 WCF 访问成为可能,我在 NuGet 上安装了“System.ServiceModel.Http”和“System.ServiceModel.Security”。
但是,.NET Standard 项目中没有“添加服务引用”菜单项。 如何添加服务引用?
.NET Framework项目中存在,.NET Standard项目中不存在,所以有问题。
【问题讨论】:
msdn.microsoft.com/en-us/library/bb628649.aspx 在解决方案资源管理器中右键references
,选择Add service reference
。
可惜那个版本没有这个东西,你可以用这个吗? marketplace.visualstudio.com/…
右键“引用”-->“添加服务引用”只能.NET Framework项目。在 netstandard 项目中,它不能。
github.com/dotnet/announcements/issues/70 命令行工具是另一种选择。
【参考方案1】:
我来到这里希望解决一个稍微不同的问题......但也许可以回答你的问题;
我必须将 VS2017 更新到最新版本(我现在是 15.5.2),然后; 右键单击项目>>添加>>连接的服务,然后单击“Microsoft WCF Web Service Reference Provider”。提供的对话框与框架“添加服务引用”选项的对话框非常相似。
如果您要添加新类等,您将使用相同的“添加”菜单......
这是在 15.5 版中添加的。请参阅WCF on github 了解更多信息。
【讨论】:
【参考方案2】:Visual Studio 2017 社区 v15.9.7
Solution Explorer -> 右键单击Dependencies -> 添加Connected Service
截图:
【讨论】:
【参考方案3】:这些解决方案并不适合我。我将它与 Unity 2019.1.10f 和 Visual Studio 2017 一起使用。我发现您需要做的是将与 WCF 相关的 dll 添加到您的 Unity 项目中,然后生成服务客户端代理并将其带到您的脚本中。下面一步一步来。
-
创建一个新的 Unity 3D 项目,或打开您的项目,然后在 Assets 下创建一个名为 Plugins 的新文件夹。
导航到 Unity 的安装文件夹(例如 C:\Program Files\Unity\Hub\Editor\2019.1.10f1)。
从安装文件夹,导航到Editor\Data\Mono\lib\mono\2.0,在这个文件夹中你应该找到System.ServiceModel.dll,你需要把这个文件复制到步骤1中创建的Plugins文件夹中.
现在生成服务客户端代理,您可以通过几种方式来实现,一种选择是使用 svcutil,例如在 VS 命令提示符下运行以下命令来生成客户端代理类。
svcutil -out:c:\temp\ClientProxy.cs https://[YourWebServiceDomain]/[Service].svc
将上面的 ClientProxy.cs 文件复制到您的项目中任何您喜欢的资产下。
现在在您的项目中添加一个新的 Monobehaviour 脚本,例如 WebClient.cs。您需要将其附加到场景中的某个游戏对象上才能运行下面的脚本。 打开 WebClient.cs 并添加您的代码以连接到新的代理服务,示例如下。using UnityEngine;
using System.ServiceModel;
using YourClientProxyNamespace;
public class WebClient : MonoBehavior
void Start()
using (ProxyClient client = new ProxyClient(
new BasicHttpBinding(BasicHttpSecurityMode.Transport),
new EndpointAddress("https://YourWebServiceDomain/Service.svc")))
var response = client.DesiredMethod();
// Do whatever with the response
【讨论】:
【参考方案4】:其实你可以右击,进入“添加连接的服务”,然后点击“Microsoft WCF Web Service Reference Provider”,应该和“添加服务”一样。
【讨论】:
【参考方案5】:本练习基于Use the WCF Web Service Reference Provider Tool
环境:
net5.0 visual studio 2019 preview version(由于.net core 版本)。我使用过 asmx Web 服务,但文档说:它与 WCF 服务相同。我认为它适用于所有 SOAP 服务。
-
添加服务引用(使用 WCF Web 服务引用提供工具)。
添加包引用:
1) 添加服务参考的步骤:
项目> 添加连接服务
将 WCF 服务引用添加到项目。
【讨论】:
【参考方案6】:您可以通过将服务拖到 bin 目录中来手动添加它
【讨论】:
你误会了。 “添加服务引用”一般通过以下方式完成。以上是关于如何在 .NET Standard 项目中“添加服务引用”的主要内容,如果未能解决你的问题,请参考以下文章
为啥 .NET 框架项目可以作为参考添加到 .NET Standard 2.0 项目中?
如何在新创建的 .NET Core 2.0 Web 应用程序中定位 .NET Standard 2.0?
为什么在一个解决方案中混合.Net Standard和.Net Core项目?
为啥在面向 .NET Standard 的项目中可以不分配 Out 参数?