OmniSharp / omnisharp-atom

Omnisharp support for the atom editor
https://atom.io/packages/omnisharp-atom
MIT License
318 stars 61 forks source link

Inconsistent results with Unity project. #510

Open mikew opened 9 years ago

mikew commented 9 years ago

Two machines, both new installs of OSX, Unity, and Atom, both sets of packages installed the same way.

We've run rm *.sln *.csproj on both machines, then use the "Open C# Project" in Unity's menu (formerly "Sync MonoDevelop Project".

At this point, on one machine, everything works a charm. On the other machine, the second I go to edit any code the log fills up with errors about missing references, even to plenty of built in stuff.

There is no difference in the .sln files, and the only difference in the *.csproj files is a full path to a DLL and some Unity defines (working machine has a pro license and the other machine is a personal license).

Has anyone come across this?

nosami commented 9 years ago

Can you open the solution that doesn't work in MonoDevelop or Xamarin Studio?

mikew commented 9 years ago

Yep, and everything works as expected in MonoDevelop.

david-driscoll commented 9 years ago

Do you have a sample of the errors you're seeing? On Thu, Sep 17, 2015 at 11:59 AM mikew notifications@github.com wrote:

Yep, and everything works as expected in MonoDevelop.

— Reply to this email directly or view it on GitHub https://github.com/OmniSharp/omnisharp-atom/issues/510#issuecomment-141132282 .

Thanks, David

mikew commented 9 years ago

It goes between not being able to find UnityEngine stuff, to finding that but failing half-way through loading the projects code, if that's of any assistance.

https://gist.github.com/mikew/319d3d47339c53e98b15#file-omnisharp-output-log is log from omnisharp. Some interesting bits:

Line 108:

An unhandled exception has occurred: Diagnostic must have span '[1403..1403)'

Line 70

Failed to process project file '/Users/pankaj/src/alaska/Assembly-CSharp-Editor.csproj'
nosami commented 9 years ago

@mikew what are the names of the solution files? Unity used to emit 2 out per project and one used to end in -csharp.sln. That's the one that we use for Unity.

Maybe they changed something?

nosami commented 9 years ago

@mikew see here https://github.com/OmniSharp/omnisharp-roslyn/blob/master/src/OmniSharp/MSBuild/SolutionPicker.cs#L17

mikew commented 9 years ago

Yeah it looks like Unity 5.2.0 drops the *-csharp.sln file. All of the *-vs.csproj are gone as well. This blog post mentions "Native Visual Studio Integration".

Either way, neither machine has any *-csharp.sln file, but we are still in this jam.

david-driscoll commented 9 years ago

I wonder if you're able to drop back to something pre 5.2.0, and see if it works there? It could be need some sort of alternative if those files are gone.

mikew commented 9 years ago

Once work is finished I'll try 5.1 and 5.2, with and without licenses, in a project I can share the source in, and see what happens.

mikew commented 9 years ago

The issue persisted with 5.1.3, with either Pro or Personal licenses.

The issue did not crop up on a new project, everything worked fine there.

I tried opening the project in Vim with YouCompleteMe, and it could load the references omnisharp-atom said it couldn't find.

atom vim

nosami commented 9 years ago

YouCompleteMe uses the old version of the server (omnisharp-server vs omnisharp-roslyn)

Is it possible for you to share your code? maybe privately?

mikew commented 9 years ago

Sure, hit my email, it's on my profile.

nosami commented 9 years ago

Emailed!

nosami commented 9 years ago

Seems to be working for me.

screen shot 2015-09-18 at 09 44 01
mikew commented 9 years ago

Just as I feared. Thanks for taking a look tho!

nosami commented 9 years ago

On the machine that doesn't work, can you just check the references in your csproj, and see if they exist on disk where they are supposed to be?

Angrycrow commented 9 years ago

How do I find the log file? I've been having a similar issue. Where. In the event that I have to force-quit ( usually from Cutting or Deleting multiple lines over a certain size * that cause a temporary error * . Unclosed if as an example ). Atom will hang. I know it's an omnisharp issue , or I've narrowed it down that far at least. Would be fine, except for when I reload the file. The internal ( atom? ) backup replaces the current working version from unity. This has resulted re-fixing a project more than once. How can I help this ? - ( unity 5.1 )

david-driscoll commented 9 years ago

@Angrycrow For that hanging issue, do you have Enhanced Highlighting on? There is an outstanding issue, that appears to cause atom to get stuck in an infinite loop. Disabling Enhanced Highlighting has been known to fix it (it is also the reason that enhanced highlighting is off by default still).

I've not been able to get the Chromium Debug tools to get in there while the issue is happening to determine what the real and true fix is. If you can some extra traction in there that would be helpful, but you certainly don't have to.

Angrycrow commented 9 years ago

oh.. While the issue is happening.. What am I looking for ?

screen shot 2015-09-21 at 12 43 29 pm
david-driscoll commented 9 years ago

From what I've seen, as I've been unable to narrow it down, it has to do with something in the atom core code, around tokenization. It's also possible it's something OmniSharp-atom is doing, that atom just doesn't like. Unfortunately I don't have much more than I've seen it happen, and turning off highlighting has been the fix.

On Mon, Sep 21, 2015 at 1:44 PM, Ben Nix notifications@github.com wrote:

oh.. While the issue is happening.. What am I looking for ? [image: screen shot 2015-09-21 at 12 43 29 pm] https://cloud.githubusercontent.com/assets/2450703/9999889/78942474-605e-11e5-9ec2-28ad8f6bc964.png

— Reply to this email directly or view it on GitHub https://github.com/OmniSharp/omnisharp-atom/issues/510#issuecomment-142056116 .

Angrycrow commented 9 years ago

hermm... This is worth learning more about.. Let's see.. I'll tinker around and see if I can re-create it in these conditions.

[ Recreated by cutting condition ( AFAIK ) ]

Angrycrow commented 9 years ago

I think I caught it while capturing , But I don't know if it'll ever finish retrieving events... hanging on this now :

screen shot 2015-09-21 at 1 05 55 pm

Let's try that again..

Similar.. maybe more info?

screen shot 2015-09-21 at 1 15 21 pm

So that won't complete either... but it does show the last couple things it did... Also the top panel , only the close and radio buttons in that menu seem to work. The Chrome Task manager doesn't respond either.

Angrycrow commented 9 years ago

I've been able to re-create this condition pretty reliably. Let me know if you need the solution to see what happens. All I've been doing is cutting out the condition at the end of that method.

 // draggin detail.
        if ( isDragging )
        {
            arm.SetActive(false);
            drag.SetActive(true);
        }
        else
        {
            drag.SetActive(false);
        }
david-driscoll commented 9 years ago

If you have the repo somewhere that'd be great, if it's closed source, I can get you my email, and I can test it there.

On Mon, Sep 21, 2015 at 2:35 PM, Ben Nix notifications@github.com wrote:

I've been able to re-create this condition pretty reliably. Let me know if you need the solution to see what happens. All I've been doing is cutting out the condition at the end of that method.

// draggin detail. if ( isDragging ) { arm.SetActive(false); drag.SetActive(true); } else { drag.SetActive(false); }

— Reply to this email directly or view it on GitHub https://github.com/OmniSharp/omnisharp-atom/issues/510#issuecomment-142069998 .

Angrycrow commented 9 years ago

Here's a link to the project ( Unity 5.1 ), let me know if you can recreate the bug. I'm runnin OSX 10.10.5 and the current atom/omniSharp release.

https://www.dropbox.com/s/06fsar9383tkifr/Archive_TROLL_LD33.zip?dl=1

david-driscoll commented 9 years ago

I think I finally nailed this... hopefully this is the last edge case we have...

david-driscoll commented 9 years ago

@Angrycrow try v0.24.13 and let me know if the problem is gone for you (it was for me with your code anyway)

Angrycrow commented 9 years ago

Checked the pre : Issue still exists. updating Sorry to say. Still getting it. Disabling that green pencil icon thing certainly works around it. But I was able to recreate the bug just the same:

screen shot 2015-09-24 at 10 12 49 pm

Seems like there is a slightly longer window before the hang. The cursor flashes at least once before the program halts.

david-driscoll commented 9 years ago

on quick question did you restart atom after you updated?

Angrycrow commented 9 years ago

I did. Yes. I'm re-installing omniSharp just to be sure. Atom is V 1.0.18 currently?

Angrycrow commented 9 years ago

I found another clue. Trying to nail down the specific behavior. so in .

if ( isDragging )
        {
            arm.SetActive(false);
            drag.SetActive(true);
        }
        else
        {
            drag.SetActive(false);
        }

The comment isn't part of what takes it down. I can do any other combination so far of cuts/deletes but if I move that entire condition alone.. The bug occurs.

By any combination I mean. Parts of it. For example cutting the else section. or any part of the core. Not sure if that helps.

I was looking at the highlight.ts file that was changed to fix this and it does work in the case of selecting the lines above and below this condition when you want to remove it.. But not for the explicit removal of the condition.

david-driscoll commented 9 years ago

I see it now...

david-driscoll commented 9 years ago

I think I found the common edge cases (I'm sure there are more).

@Angrycrow you mind trying out this branch locally https://github.com/OmniSharp/omnisharp-atom/pull/522 and letting me know if it works for you? (If you need instructions just reply or hit me up on Jabbr ( https://jabbr.net/#/rooms/omnisharp )