2016-09-02 38 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。