如何在 .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 服务引用提供工具)。 添加包引用:
System.ServiceModel.Http 4.8.1

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 参数?

.NET Standard / Core 中的 .vspscc 文件

Entity Framework 6 可以在 .NET Standard 项目中使用吗?