我试图在Unity项目中使用WCF,因此我需要引用dll System.ServiceModel
。另外,这些是有关我的环境的更多信息:
在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中什么也没有发生:在编译时我仍然会收到错误,因为程序集显然根本没有加载。
注意,我还通过右键单击Unity中的Assets
窗格并单击Reimport All
以确保重新生成C#项目来重新导入所有内容。我可以看到它已重新生成,但是仍然没有任何变化:相同的问题。
我在做什么错了?
答案 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/