2016-09-02 29 views
0

我正尝试在使用TcpClient的C#插件统一构建UWP应用程序。该插件使用System.Net.Sockets。当我构建一个独立的可执行文件时,该应用程序在我的本地机器上完美运行。但是,当我尝试为Universal 10平台构建它时,它不起作用。这很重要,因为我的目标是在Hololens上部署应用程序。在Unity中使用TcpClient构建UWP应用程序

我在控制台中错误CS0246:

The type or namespace TcpClient could not be found (are you missing a using directive or an assembly reference?)

我遇到谁已经陷入越来越TcpClient的团结与合作类似问题的人。我试着按照这个解决方案安装预发布的System.Net.Sockets 4.1包:https://github.com/dotnet/corefx/issues/5939

我在Visual Studio中打开了C#项目,并且我成功安装了版本4.1。然而,当我再次尝试建设时,遇到了同样的错误。这里是我的packages.config文件:

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="System.IO" version="4.0.0" targetFramework="net461" /> 
    <package id="System.Net.Primitives" version="4.0.10" targetFramework="net461" /> 
    <package id="System.Net.Sockets" version="4.1.0-beta-23516" targetFramework="net461" /> 
    <package id="System.Runtime" version="4.0.0" targetFramework="net461" /> 
    <package id="System.Threading.Tasks" version="4.0.0" targetFramework="net461" /> 
</packages> 

我也碰到过这样的解决方案,它使用StreamSocket从Windows.Networking.Sockets包代替: How to connect to Unity game server socket from UWP app via sockets?

我认为只是全部重写的代码与StreamSocket一起工作。但是,由于我没有编写原始代码,因此这会很困难且容易出错。

我正在处理的代码是包含在Brekel Pro Face 2中的数据流脚本。我会从代码中发布一些代码片段,但我不确定布雷克尔是否可以。

任何想法?

回答

1

的问题

统一的目标单,这需要更高的插件是一个.NET平台的DLL。但是,Hololens支持Windows Universal应用程序,这需要该插件为通用窗口平台(UWP)DLL。因此,Unity和Hololens都不可能使用相同的插件。如果它适用于Unity,为Hololens建设将失败。

溶液

的解决方案是使用该插件的两个版本;一个.NET平台DLL和一个UWP DLL。两个DLL应该有相同的接口,以便允许使用相同的代码从任何两个DLL中引用类,方法等。

解决步骤

假设您已经创建了两个DLL文件(x.dll)和(x.uwp.dll)提供相同的接口(即命名空间,公共类的名字,等等),解决方案应该如下所示:

  1. 在Unity项目的Assets文件夹下创建一个Plugins文件夹。
  2. 将(x.dll)文件拖放到Plugins文件夹中并选中它。
  3. 从“选择平台插件”下的“检查器”窗口中,确保仅选中“编辑器”。
  4. 在Plugins文件夹下创建一个名为WSA的子文件夹。
  5. 将(x.uwp.dll)文件拖放到WSA文件夹中并将其选中。
  6. 从Select platform for plugin下的Inspector窗口中,确保只检查WSAPlayer。

现在Unity在您的计算机上运行该项目时将使用x.dll,并在为Hololens构建项目时使用x.uwp.dll。