![](/img/trans.png)
[英]Building an UWP app from unity, using external dll built in visual studio, generates an error on the Task class
[英]Building a UWP App in Unity using TcpClient
我正在嘗試使用利用TcpClient的C#插件統一構建UWP應用。 該插件使用System.Net.Sockets。 當我構建一個獨立的可執行文件時,該應用程序可以在本地計算機上完美運行。 但是,當我嘗試為Universal 10平台構建它時,它不起作用。 這很重要,因為我的目的是在Hololens上部署該應用程序。
我在控制台中收到錯誤CS0246:
The type or namespace TcpClient could not be found (are you missing a using directive or an assembly reference?)
我遇到過遇到類似問題的人,他們使TcpClient與Unity一起工作。 我嘗試根據以下解決方案安裝預發布的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>
我也遇到過這個解決方案,它使用Windows.Networking.Sockets包中的StreamSocket: 如何通過套接字從UWP應用連接到Unity游戲服務器套接字?
我考慮過只重寫所有代碼以與StreamSocket一起使用。 但是,由於我沒有編寫原始代碼,因此這將很困難且容易出錯。
我正在處理的代碼是Brekel Pro Face 2附帶的數據流腳本。我會從代碼中發布一些代碼片段,但是我不確定Brekel是否可以接受。
有任何想法嗎?
問題
Unity以Mono為目標,Mono要求插件為.NET平台DLL。 但是,Hololens支持Windows通用應用程序,該應用程序要求插件為通用窗口平台(UWP)DLL。 因此,不可能對Unity和Hololens使用相同的插件。 如果它適用於Unity,則為Hololens構建將失敗。
解決方案
解決方案是使用兩個版本的插件; .NET平台DLL和UWP DLL。 兩個DLL應該具有相同的接口,以便允許使用相同的代碼從兩個DLL中的任何一個引用類,方法等。
解決步驟
假設您已經創建了兩個具有相同接口(即名稱空間,公共類名稱等)的DLL文件(x.dll)和(x.uwp.dll),則解決方案應如下所示:
現在,當您在計算機上運行項目時,Unity將使用x.dll,而在為Hololens構建項目時,Unity將使用x.uwp.dll。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.