floatinghotpot / socket.io-unity

socket.io client for Unity, power game client with node.js back-end
494 stars 76 forks source link

Is defined multiple times #1

Open farzadi opened 7 years ago

farzadi commented 7 years ago

I have errors in some of my packages. Is this error under test and resolving? if yes, please let me know how long it takes to be resolved and help me solve the problem temporarily. The packages that had conflict in my project were NGUI and UnityMainThreadDispatcher.

The type 'Action' exists in both 'SocketIoClientDotNet, Version =1.0.0.0 , Culture=neutral , PublicKeyToken=null' and System.Core, Version =3.5.0, Culture=neutral , PublicKeyToken = b77a5c561934e089'

and

The type'Func' exists in both 'System.Core', Version=3.5.0.0 , Culture=neutral,PublicKeyToken = b77a5c56193e089 and 'WebSocket4Net, Version =0.14.1.0 ,Culture=neutral ,PublicKeyToken = ed4e154b696bf72a'

vnedilko commented 7 years ago

Same problem. Hope soon will be fixed.

floatinghotpot commented 7 years ago

It will be helpful if you can provide the version number of:

vnedilko commented 7 years ago

Last version of unity 2017.1f3, released 11 July 2017

farzadi commented 7 years ago

Unity 5.5.1f1 .NET v4.5.x v4.5.x v4.6.x

floatinghotpot commented 7 years ago

As I know, you can use .NET v4.5 on Windows/XBOX platform, but to build runtime for cross platform like iOS or Android, you need select Mono and .NET 2.0.

See: http://answers.unity3d.com/questions/1305565/as-of-12017-what-is-the-highest-version-of-net-tha.html

vnedilko commented 7 years ago

This error present in editor and break all work. With lasterst release of unity you cant use this pluging becouse of error. Looks like you have same named classes.

vnedilko commented 7 years ago

Settings untitled-1

Errors

error CS0433: The imported type `System.Action' is defined multiple times

error CS0433: The imported type `System.Func' is defined multiple times

error CS0433: The imported type `System.Func<T,TResult>' is defined multiple times

floatinghotpot commented 7 years ago

Weird, I still did not figure out what happens in your situation.

It works quite well when I test the demo project with Unity 5.4.4 in my office and Unity 5.6.1 at home.

Or, you may try building the library from source code here (using branch net20): https://github.com/floatinghotpot/SocketIoClientDotNet/tree/net20

floatinghotpot commented 7 years ago

Hi guys, I just downloaded and install Unity 2017.1 (on my iMac), start the test-server/index.js, then open the Demo/Hello.unity in Unity, configure the URL, then run the demo in Unity, it works just fine. See the attached screenshot.

socketio-demo

jake commented 7 years ago

Also having this issue, with completely unrelated libraries.

Assets/ThirdParty/SteamVR/InteractionSystem/Core/Scripts/Util.cs(411,69): error CS0433: The imported type `System.Action' is defined multiple times

Sounds like maybe something in one of these DLLs is writing something to System.Action, which is causing unexpected other third party libraries using the same name?

farzadi commented 7 years ago

Yes if you just use this package its not have a problem, errors came from when you add other packages to your project

vnedilko commented 7 years ago

Sample code for receive this issues

using System;
using UnityEngine;

public class Test:MonoBehaviour
{
    public Action callback;
    public Func<int> callback2;
    public Func<int, bool> callback3;
}
gershhub commented 7 years ago

I am seeing the same System.Action collision issue with a BLE plugin.

Oakshiro commented 7 years ago

Same problem here, System.Func' is defined multiple times all around

tbhyn commented 7 years ago

Encountering this problem with Vuforia. What can we do in such a case?

floatinghotpot commented 7 years ago

Here is the source code, https://github.com/floatinghotpot/SocketIoClientDotNet/tree/net20

If anyone wanna contribute, try forking the code and help to fix it.

marius-bughiu commented 7 years ago

Looks like two different packages try to define the same type in the same namespace by either

My eyes are on System.Threading.Tasks.Unofficial. It seems to be defining some types for compatibility. If, for example, some other plugin would be using the TaskParallelLibrary - then I could see why these two plugins would probably not work together.

Unfortunately I won't have any time for this until next week. If it's not solved by then I will have a look.

A sample project on Git to reproduce the issue would help a lot.

alex-carlson commented 6 years ago

I'm getting an error in Unity that is probably related to this.

ArgumentException: An element with the same key already exists in the dictionary.

It looks like that's being triggered when I try to connect to the server after initially declaring socket = null;. The error doesn't happen if I just do socket = "http://localhost:3000"; for example.

I'm also running on latest Unity 2017.1.1f1

Dr-Jerm commented 6 years ago

Just getting on the "I'm having problems too" train. Here's my output:

The type 'Func<T1, T2, TResult>' exists in both 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' and 'WebSocket4Net, Version=0.14.1.0, Culture=neutral, PublicKeyToken=eb4e154b696bf72a'

As stated above, only seems to break in the presence of other packages. In my specific case it's https://github.com/neuecc/UniRx

patricknelson commented 6 years ago

Just researching this for now... but: @marius-bughiu - Did you ever get a chance to work on this a bit more?

GkhanKINAY commented 6 years ago

I am using UnityAction until the problem will be solved. Here is the example usage,

using UnityEngine;
using UnityEngine.Events;

public class Test : MonoBehaviour 
{
    private void Start () 
    {
        DemoLog( () => 
        {
            Debug.Log("Second message"); 
        });
    }

    private void DemoLog(UnityAction callback)
    {
        Debug.Log("First message");
        callback();
    }
}

@floatinghotpot, can you fix this = https://github.com/floatinghotpot/socket.io-unity/issues/10 ? Thanks.

vellames2 commented 6 years ago

Same problem here guys @GkhanKINAY Thank you for your tip, this saved my day :)

siordache94 commented 6 years ago

Hi , how is using UnityEngine.Events; supposed to fix the issue ? Currently at GGJ , conflicting with STEAMVR will be waitin for you answer. Thanks in advance!

GkhanKINAY commented 6 years ago

@siordache94 Hi, good luck in GGJ. Use "UnityAction" instead of "Action" Where is your problem?

siordache94 commented 6 years ago

it's very deep , if you try to import this and https://www.assetstore.unity3d.com/en/#!/content/32647 this asset, there's conflict on action , i tried putting either unityaction in steamvr , tried wrappin system in sys (in case of conflicting namespace) after changing all the references to system.action i get 40+ other errors. IF (and thats a big if) there's a quick fix that you know about ( i have little to no experience ) , please do share... thank you

GkhanKINAY commented 6 years ago

@siordache94 I change Util.cs and now working, i think. Replace Assets/SteamVR/InteractionSystem/Core/Scripts/Util.cs

Util.cs.zip

James-Quigley commented 6 years ago

I'm having the same issue. Unity 2017.3 and .NET 3.5. Replacing System.Action with UnityAction works sometimes, but not always, so it isn't really a valid fix for me. Does anybody have any thoughts as to what might be causing this? I'm new to Unity and C#, so unfortunately I'm pretty clueless

patricknelson commented 6 years ago

@GkhanKINAY If you think you've got a viable fix, could you submit a PR and reference this ticket?

GkhanKINAY commented 6 years ago

@patricknelson OK, i fixed the problem on the source code. (https://github.com/floatinghotpot/SocketIoClientDotNet/pull/1)

floatinghotpot commented 6 years ago

Thanks to @GkhanKINAY , the file has been merged.

James-Quigley commented 6 years ago

I'm attempting to use this library alongside Google Poly Toolkit. I'm still running into the System.Action is defined multiple times, even with the new dlls from @GkhanKINAY. Did the issue actually get fixed, or is this potentially an issue with the Poly Toolkit?

GkhanKINAY commented 6 years ago

@James-Quigley hmm, i will test in 1-2 hour.

GkhanKINAY commented 6 years ago

@James-Quigley Hi again, sorry for delay. I tested and your problem is WebSocket4Net.dll, not SocketIoClientDotNet.dll. (And you need delete Newtonsoft.Json.dll because "Poly Toolkit" project is have one.)

Problem: https://github.com/kerryjiang/WebSocket4Net/blob/master/WebSocket4Net/Action.cs

James-Quigley commented 6 years ago

@GkhanKINAY Thanks so much for your help. So the fix is to go into the source for WebSocket4Net and change the Action definition and all its references to something else e.g. CustomAction?

GkhanKINAY commented 6 years ago

@James-Quigley Yes, you are right. (I changed "ActionTrigger" instead of "Action" and build:SocketIoClientDotNet.dll) Look my pull request: https://github.com/floatinghotpot/SocketIoClientDotNet/pull/1

Xortrox commented 6 years ago

I have a similar issue where "System.Func" is defined multiple times

Replacing it with other things just causes more errors like ".Contains is not defined, are you missing a using reference" which then suggest System.Linq or Quobject.Collections.Immutable in some classes like "Unity3DRider.cs"

siordache94 commented 6 years ago

Hi, the multiple declaration is an issue also with the postprocessing stack and volumetric lighting can you please wrap this module in a namespace, fixing all possible issues, please?

not82 commented 6 years ago

Hi , Got the same issue here, with Zenject.

It seams WebSocket4Net got a mscorelib different of .NET 2.0 included in recent versions of Unity.. And Zenject is using it and don't know what reference he must use. ( same package , but 2 different sources )

:/

timgoeij commented 6 years ago

Hi

I have the issue where the System.Func<T, TResult> is defined multiple times with the websocket4net dll in combination with the mapbox api. I am using unity2017.2

Andychan0704 commented 6 years ago

Hi,

Seems the fix only changed "Action fn" to "ActionTrigger fn". (source code in AckImpl.cs or elsewhere)

Believe, others such as

Action fn1; Action<object, object> fn2; Action<object, object, object> fn3;

also need to be changed as well.

As I encountered the issue (defined multiple times) for those calls (ie. System.Action, System.Action<T1,T2>, System.Action<T1,T2,T3> ... is defined multiple times)

Cheers

ahmedsherpiny commented 6 years ago

Hi,

I still have this problem when I uses Fingers - Touch Gestures from AssetStore.

I face it with System,Action<T1,T2,T3>() and System.Func()

Any hints or workarounds?

Lesliehdezg commented 6 years ago

same error but with websocket4net.dll

the error with SocketIoClientDotNet works.

IlyaVorozhbit commented 6 years ago

короче, просто нужно взять другой провайдер сокета для юнити и всё

farukcan commented 6 years ago

same error with websocket4net.dll :

Assets/GMES/UTIL/ExpressionParser.cs(303,43): error CS0433: The imported type System.Func<T,TResult>' is defined multiple times Assets/GMES/FullSerializer/Source/fsConfig.cs(70,16): error CS0433: The imported typeSystem.Func<T1,T2,TResult>' is defined multiple times

Lesliehdezg commented 6 years ago

Wich new provider recommend?

henrikljungberg5467 commented 6 years ago

I wanted to use this with IBM Watson SDK (speech-to-text) and got "Is defined multiple times" problem. Also another time I was tryng to use it alongside the Embedded browser asset (https://assetstore.unity.com/packages/tools/gui/embedded-browser-55459) and that gave me loads of "Is defined multiple times" problems.

det3d commented 6 years ago

I'm having the same problem trying to use Socket.IO and Hololens in Unity.
Getting error CS0433 'System.Action<T1,T2>' Also getting the error for 'System.Func' Not really sure how to fix this. Tried downloading the Fix above for the SocketIoClientDotNet.dll file, but nothing really changed. Any help would be great!

James-Quigley commented 6 years ago

@det3d I ended up using the BestHTTP Unity library to do Socket.IO stuff on the HoloLens. It worked great! It is paid, but honestly saved me so much headache that it is probably worth it.

det3d commented 6 years ago

Thanks for the tip! Best HTTP worked out great for Socket.IO and Hololens!

On Tue, May 22, 2018 at 7:20 PM, James Quigley notifications@github.com wrote:

@det3d https://github.com/det3d I ended up using the BestHTTP Unity library to do Socket.IO stuff on the HoloLens. It worked great! It is paid, but honestly saved me so much headache that it is probably worth it.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/floatinghotpot/socket.io-unity/issues/1#issuecomment-391171416, or mute the thread https://github.com/notifications/unsubscribe-auth/AFzgxLWO0hRxzwdyI3mjYkuGcB82WYpUks5t1J0sgaJpZM4OVeEG .

hypeofpipe commented 6 years ago

It still doesn't work because it is a indus code!