consulo / consulo-unity3d

Frameworks: Unity3D
Apache License 2.0
104 stars 10 forks source link

Consulo Assembly Definitions Not Working #186

Open TCROC opened 3 years ago

TCROC commented 3 years ago

A repo for reproducing this bug can be found here: https://github.com/TCROC/ConsuloBug-Asmdef

Consulo is not following Unity's Assembly Definitions.

image

As can be seen, "Asmdef1" does not reference "Asmdef2" and Unity is throwing compiler errors.

However, Consulo is allowing me to reference SomeScript2 from SomeScript1 without errors even though it is an assembly that is not referenced by "Asmdef1"

image

OS: Ubuntu 18.04 Unity Version: 2019.4.14f1 Unity Consulo UPM Version: 2.4.0 consulo.log

Consulo About

 Consulo:
  version = 2020.12
  build number = 2748
  build date = December 3, 2020
 Plugins:
  com.intellij = 2748
  com.intellij.git = 1230
  com.intellij.regexp = 1180
  com.intellij.spellchecker = 1187
  com.intellij.xml = 2653
  com.intellij.properties = 2757
  consulo.dotnet = 3275
  consulo.dotnet.microsoft = 3805
  consulo.dotnet.mono = 3818
  consulo.csharp = 4815
  consulo.javascript = 3062
  consulo.library.batik = 484
  com.intellij.images = 1875
  consulo.library.flexmark = 484
  com.intellij.tasks = 4550
  consulo.msbuild = 4099
  consulo.nuget = 4330
  consulo.nunit = 4347
  consulo.opencover = 3244
  consulo.platform.desktop = 2748
  mobi.hsz.idea.gitignore = 385
  org.jetbrains.plugins.github = 4224
  org.jetbrains.plugins.terminal = 1091
  org.jetbrains.plugins.yaml = 2123
  consulo.unity3d = 7490
 JVM:
  vendor = JetBrains s.r.o
  version = 11.0.4
  runtimeVersion = 11.0.4+10-b304.77
  locale = en_US
 JVM Env:
  __idea.mac.env.lock = unlocked
  awt.toolkit = sun.awt.X11.XToolkit
  java.specification.version = 11
  sun.cpu.isalist = 
  sun.jnu.encoding = UTF-8
  log4j.shutdownHookEnabled = false
  sun.arch.data.model = 64
  consulo.properties.file = /home/t-croc/Applications/Consulo/consulo.properties
  sun.font.fontmanager = sun.awt.X11FontManager
  idea.properties.file = /home/t-croc/Applications/Consulo/consulo.properties
  java.vendor.url = https://www.jetbrains.com/
  consulo.home.path = /home/t-croc/Applications/Consulo/platform/build2748
  sun.java2d.uiScale.enabled = true
  log4j2.messageFactory = org.apache.logging.log4j.message.SimpleMessageFactory
  sun.io.useCanonCaches = false
  sun.boot.library.path = /home/t-croc/Applications/Consulo/platform/build2748/jre/lib
  jna.tmpdir = /home/t-croc/.consulo_settings/system/tmp
  sun.java.command = consulo.desktop.bootstrap/consulo.desktop.boot.main.Main
  jdk.debug = release
  sun.awt.exception.handler = com.intellij.openapi.application.impl.AWTExceptionHandler
  java.specification.vendor = Oracle Corporation
  jdk.module.path = /home/t-croc/Applications/Consulo/platform/build2748/boot
  java.version.date = 2019-07-16
  java.home = /home/t-croc/Applications/Consulo/platform/build2748/jre
  file.separator = /
  java.vm.compressedOopsMode = 32-bit
  line.separator = \n
  java.specification.name = Java Platform API Specification
  java.vm.specification.vendor = Oracle Corporation
  idea.home.path = /home/t-croc/Applications/Consulo/platform/build2748
  jdk.module.main.class = consulo.desktop.boot.main.Main
  awt.useSystemAAFontSettings = lcd
  sun.management.compiler = HotSpot 64-Bit Tiered Compilers
  jb.restart.code = 88
  java.runtime.version = 11.0.4+10-b304.77
  user.name = t-croc
  javax.swing.rebaseCssSizeMap = true
  sun.java2d.pmoffscreen = false
  sun.awt.noerasebackground = true
  file.encoding = UTF-8
  sun.java2d.noddraw = true
  jnidispatch.path = /home/t-croc/.consulo_settings/system/tmp/jna11270038589669586487.tmp
  idea.popup.weight = heavy
  jna.loaded = true
  java.io.tmpdir = /tmp
  java.version = 11.0.4
  java.vm.specification.name = Java Virtual Machine Specification
  java.awt.printerjob = sun.print.PSPrinterJob
  sun.os.patch.level = unknown
  consulo.vm.options.file = /home/t-croc/Applications/Consulo/consulo64.vmoptions
  java.library.path = /home/t-croc/Applications/Consulo/platform/build2748/bin::/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
  java.vendor = JetBrains s.r.o
  io.netty.processId = 54131
  sun.io.unicode.encoding = UnicodeLittle
  java.rmi.server.disableHttp = true
  io.netty.machineId = 28:f0:76:ff:fe:16:65:0e
  java.util.concurrent.ForkJoinPool.common.parallelism = 8
  sun.desktop = gnome
  java.class.path = 
  sun.awt.enableExtraMouseButtons = true
  java.vm.vendor = JetBrains s.r.o
  consulo.module.path.boot = true
  user.timezone = America/New_York
  jb.vmOptionsFile = /home/t-croc/Applications/Consulo/consulo64.vmoptions
  idea.no.launcher = false
  swing.bufferPerWindow = false
  os.name = Linux
  java.vm.specification.version = 11
  sun.java.launcher = SUN_STANDARD
  user.country = US
  sun.cpu.endian = little
  user.home = /home/t-croc
  user.language = en
  idea.cycle.buffer.size = 1024
  java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
  jdk.module.main = consulo.desktop.bootstrap
  idea.max.intellisense.filesize = 2500
  sun.java2d.d3d = false
  java.net.preferIPv4Stack = true
  path.separator = :
  idea.use.default.antialiasing.in.editor = false
  os.version = 5.4.0-56-generic
  jna.nosys = true
  java.runtime.name = OpenJDK Runtime Environment
  sun.nio.ch.bugLevel = 
  java.vm.name = OpenJDK 64-Bit Server VM
  jna.platform.library.path = /usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/lib64:/usr/lib:/lib:/usr/lib/i386-linux-gnu:/lib/i386-linux-gnu:/lib32:/usr/lib32
  java.vendor.url.bug = https://youtrack.jetbrains.com
  java.util.concurrent.ForkJoinPool.common.threadFactory = consulo.bootstrap.concurrent.IdeaForkJoinWorkerThreadFactory
  user.dir = /home/t-croc
  os.arch = amd64
  io.netty.serviceThreadPrefix = Netty 
  idea.dynamic.classpath = false
  java.vm.info = mixed mode
  java.vm.version = 11.0.4+10-b304.77
  java.rmi.server.hostname = localhost
  sun.awt.datatransfer.timeout = 2000
  java.class.version = 55.0
 OS:
  name = Linux
  version = 5.4.0-56-generic
  arch = amd64
 Env:
  PATH = /usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/home/t-croc/.dotnet/tools
  XAUTHORITY = /run/user/1000/gdm/Xauthority
  XMODIFIERS = @im=ibus
  XDG_DATA_DIRS = /usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
  GDMSESSION = ubuntu
  MANDATORY_PATH = /usr/share/gconf/ubuntu.mandatory.path
  TEXTDOMAINDIR = /usr/share/locale/
  GTK_IM_MODULE = ibus
  DBUS_SESSION_BUS_ADDRESS = unix:path=/run/user/1000/bus
  DEFAULTS_PATH = /usr/share/gconf/ubuntu.default.path
  XDG_CURRENT_DESKTOP = ubuntu:GNOME
  SSH_AGENT_PID = 1664
  LD_LIBRARY_PATH = /home/t-croc/Applications/Consulo/platform/build2748/bin:
  QT4_IM_MODULE = xim
  SESSION_MANAGER = local/tcroc-Z390-UD:@/tmp/.ICE-unix/1568,unix/tcroc-Z390-UD:/tmp/.ICE-unix/1568
  USERNAME = t-croc
  LOGNAME = t-croc
  PWD = /home/t-croc
  IM_CONFIG_PHASE = 2
  GJS_DEBUG_TOPICS = JS ERROR;JS LOG
  SHELL = /bin/bash
  GIO_LAUNCHED_DESKTOP_FILE = /home/t-croc/.local/share/applications/alacarte-made-3.desktop
  GNOME_DESKTOP_SESSION_ID = this-is-deprecated
  GTK_MODULES = gail:atk-bridge
  CLUTTER_IM_MODULE = xim
  TEXTDOMAIN = im-config
  ALL_JVM_ARGS = --add-opens=java.desktop/sun.awt=consulo.container.impl --add-opens=java.desktop/sun.awt.image=consulo.container.impl --add-opens=java.desktop/sun.java2d=consulo.container.impl --add-opens=java.desktop/sun.font=consulo.container.impl --add-opens=java.desktop/java.awt=consulo.container.impl --add-opens=java.desktop/javax.swing=consulo.container.impl --add-opens=java.desktop/javax.swing.plaf.basic=consulo.container.impl --add-opens=java.base/java.lang=consulo.container.impl --add-opens=java.desktop/javax.swing.text.html=consulo.container.impl --add-opens=java.desktop/java.awt.peer=consulo.container.impl  -Xms512m -Xmx1500m -XX:ReservedCodeCacheSize=240m -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+UseCodeCacheFlushing -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -XX:+HeapDumpOnOutOfMemoryError -Dawt.useSystemAAFontSettings=lcd  -Djb.vmOptionsFile="/home/t-croc/Applications/Consulo/consulo64.vmoptions" -Dconsulo.vm.options.file="/home/t-croc/Applications/Consulo/consulo64.vmoptions" -p "/home/t-croc/Applications/Consulo/platform/build2748/boot" -Dconsulo.module.path.boot=true -Dconsulo.home.path="/home/t-croc/Applications/Consulo/platform/build2748" -Didea.home.path="/home/t-croc/Applications/Consulo/platform/build2748" -Didea.properties.file="/home/t-croc/Applications/Consulo/consulo.properties" -Dconsulo.properties.file="/home/t-croc/Applications/Consulo/consulo.properties"   
  XDG_SESSION_DESKTOP = ubuntu
  CONSULO_HOME = /home/t-croc/Applications/Consulo/platform/build2748
  SHLVL = 0
  QT_IM_MODULE = xim
  XDG_CONFIG_DIRS = /etc/xdg/xdg-ubuntu:/etc/xdg
  LANG = en_US.UTF-8
  XDG_SESSION_ID = 3
  XDG_SESSION_TYPE = x11
  JDK = /home/t-croc/Applications/Consulo/platform/build2748/jre
  DISPLAY = :1
  ROOT_DIR = /home/t-croc/Applications/Consulo
  MAIN_CLASS_NAME = -m consulo.desktop.bootstrap/consulo.desktop.boot.main.Main
  GPG_AGENT_INFO = /run/user/1000/gnupg/S.gpg-agent:0:1
  DESKTOP_SESSION = ubuntu
  USER = t-croc
  XDG_MENU_PREFIX = gnome-
  GIO_LAUNCHED_DESKTOP_FILE_PID = 28114
  QT_ACCESSIBILITY = 1
  WINDOWPATH = 2
  GJS_DEBUG_OUTPUT = stderr
  SSH_AUTH_SOCK = /run/user/1000/keyring/ssh
  XDG_SEAT = seat0
  GNOME_SHELL_SESSION_MODE = ubuntu
  XDG_VTNR = 2
  XDG_RUNTIME_DIR = /run/user/1000
  HOME = /home/t-croc
VISTALL commented 3 years ago

Hello. Consulo fully ignore .asmdef. For now this issue have low priority. Maybe later

TCROC commented 3 years ago

Ok. What would need to be changed / added for this to be implemented?

VISTALL commented 3 years ago

Just my time, which limited :)

TCROC commented 3 years ago

Haha I understand that. Where is the code that you would have to start modifying? I also don't have much free time, but I might take a look if I get a spare moment.

TCROC commented 3 years ago

And also, would it be possible to implement through the .csproj files that Unity generates? Or is it better to use the .asmdef files directly?

image

VISTALL commented 3 years ago

There long story - how Consulo work with Unity Project. After some time i decided to import projects without Unity or VS project files (some long code here https://github.com/consulo/consulo-unity3d/blob/master/plugin/src/main/java/consulo/unity3d/projectImport/Unity3dProjectImporter.java#L276)

About VS files.

First of all - when Unity generate them, it's try generate with MSBuild restriction. For example - it's don't known about full Unity Project. Not "source" files will be ignored. Unity will try reference to built-in system .NET framework, because it can't create reference to self framework.

I can't write it in a simple post:)

Second. MSBuild project files (vs files) can't not be loaded correctly without MSBuild runtime.

I have plan for MSBuild plugin implementation (https://github.com/consulo/incubating-consulo-msbuild) . Also need my time)

TCROC commented 3 years ago

Sounds good! Thanks for the helpful links! I'll let you know if I get around to trying to tackle the asmdef feature. I'll also be curious to see how you implement because from a performance standpoint, your implementation is much more efficient than VS Code Omnisharp. I was originally using that, but it just takes waaaayyyy too long to load our projects (minutes). Consulo loads up in a matter of seconds! On our largest project! :) Very impressive.

VISTALL commented 3 years ago

There some issues with loading big projects, like Consulo try to analyze audio files (or some big unknown files). I'm planning add audio plugin in future (https://github.com/orgs/consulo/projects/14)

I'm also Unity dev, I need it :)

TCROC commented 3 years ago

Awesome! :) Yep that's why we are using it :). I saw someone write a nice post about Consulo on Reddit. That's how we discovered it. I'll link in the post if I find it.