无法在Unity中引用System.ServiceModel

时间:2018-06-24 11:57:03

标签: c# unity3d

我试图在Unity项目中使用WCF,因此我需要引用dll System.ServiceModel。另外,这些是有关我的环境的更多信息:

  • Unity 2018.1.5f1个人版(64位)
  • Windows 10(64位)

使用msc.rsp

Unity doc on loading external assemblies之后,我在msc.rsp目录中创建了Assets/文件:

-r:System.ServiceModel.dll

在我的Assets/文件夹中,我还有一个需要WCF的C#文件:

using System;
using System.ServiceModel;
using System.ServiceModel.Description;

public class CommunicationEndpoint {
    private const short Port = 8000;
    private ServiceHost host;

    public void Start() {
        this.EnsureInitilized();
        host.Open();
    }

    public void Stop() {
        if (this.host != null) return;
        host.Close();
    }

    private void EnsureInitilized() {
        if (this.host != null) return;

        this.host = new ServiceHost(typeof(CommunicationService));
        host.AddServiceEndpoint(typeof(ICommunicationService), new BasicHttpBinding(), Address);

        host.Open();
    }

    private string Address {
        get { return "http://localhost:" + Port; }
    }
}

还有另一个定义了接口ICommunicationService的文件,它仍然是Assets/内部资产的一部分。在这里没有报告,因为它没有用。

仍然编译错误

基本上,Unity中什么也没有发生:在编译时我仍然会收到错误,因为程序集显然根本没有加载。

Errors in Unity

注意,我还通过右键单击Unity中的Assets窗格并单击Reimport All以确保重新生成C#项目来重新导入所有内容。我可以看到它已重新生成,但是仍然没有任何变化:相同的问题。

我在做什么错了?

2 个答案:

答案 0 :(得分:0)

我尝试建立一个类似的项目,其中有一个mcs.rsp文件,里面有-r:System.ServiceModel.dll,而我有一个.cs引用了ServiceModel命名空间,并且遇到了同样的问题。 / p>

将项目Scripting Runtime Version更改为.NET 4.0 Equivalent,并将Api Compability Level更改为.NET 4.x之后,它开始工作。

  

如果似乎缺少一部分API,则可能不包含   .NET标准2.0。该项目可能需要使用.NET 4.x Api   兼容级别。

https://docs.unity3d.com/Manual/dotnetProfileAssemblies.html

答案 1 :(得分:0)

msc.rsp 要做通过添加内容来包含System.ServiceModel.dll

-r:System.ServiceModel.dll

用于Unity编辑器

但是,csproj中包含一个DLL引用不会的错误: https://issuetracker.unity3d.com/issues/httpclient-namespace-is-not-recognized-in-vs-with-net-4-dot-x

您可以尝试通过自己更改csproj文件来解决此问题: https://docs.microsoft.com/en-us/visualstudio/cross-platform/customize-project-files-created-by-vstu?view=vs-2017

参考: https://forum.unity.com/threads/using-dynamic-keyword-not-working.490600/

https://forum.unity.com/threads/httpclient.460748/