这基本上是我昨天发布的this question之后的后果问题。长话短说,在我的Unity应用程序中引用System.ServiceModel
时遇到了麻烦,而通过安装此mcs.rsp file
可以解决此问题:
-r:System.ServiceModel.dll
并通过将Scripting Runtime Version
和Api Compability Level
设置与.NET 4.x
对齐。但是,现在我面临另一个问题。
因此,让我首先指出我的项目运行正常,没有编译错误。因此,就此而言,这很好。我面临的问题是我在Visual Studio中遇到的烦恼并影响了我的开发经验。
基本上,当我在Visual Studio中打开C#项目时,出现如下类型错误:
即使程序集System.ServiceModel
现在已经在项目中正确加载,Visual Studio仍在向我显示错误消息,抱怨那些突出显示的类型不可用。
找不到类型或名称空间“ ServiceHost”(您是否缺少using指令或程序集引用?)
为什么?这在开发时非常烦人,我无法进行整个开发,出现这样的假错误:(
如果我检查生成的项目文件Assembly-CSharp.csproj
,则会看到以下内容:
<Reference Include="System.ServiceModel.Duplex">
<HintPath>C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll</HintPath>
</Reference>
<Reference Include="System.ServiceModel.Http">
<HintPath>C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll</HintPath>
</Reference>
<Reference Include="System.ServiceModel.NetTcp">
<HintPath>C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll</HintPath>
</Reference>
<Reference Include="System.ServiceModel.Primitives">
<HintPath>C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll</HintPath>
</Reference>
<Reference Include="System.ServiceModel.Security">
<HintPath>C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll</HintPath>
</Reference>
这让我感到奇怪:
System.ServiceModel.dll
在哪里?System.ServiceModel.dll
的文件夹中有Facades
,为什么没有使用它?答案 0 :(得分:1)
由于未使用正确的dll而收到错误。为了使用System.ServiceModel
和System.ServiceModel.Description
名称空间中的任何内容,您必须引用Unity随附的正确的mono dll。
首先,将Scripting Runtime Version
和Api Compatibility Level
更改为 4.x 或 .NET 4.6等效版本(选项取决于Unity版本)。 / p>
在计算机上转到<UnityInstallationDirectory>\Editor\Data\MonoBleedingEdge\lib\mono\4.5
,例如C:\Program Files\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5
。
在该目录中,一旦将System.ServiceModel.dll
复制到您的<Project>\Assets
路径,您就应该能够使用ServiceHost
和ServiceEndpoint
API。
您可能仍然会遇到运行时错误或异常,因为它是单声道的,但这应该可以解决当前的编译时错误。 在做这个答案之前,别忘了撤消您已经在问题中完成的工作。