I have a DLL which I’m building as a core, logically encapsulating code that doesn’t reference UnityEngine. All is well and I currently have a separate .SLN (so to not have it overwritten by Unity’s autogenerated solution) which consists of the DLL’s Project and Unity’s projects (Unity.CSharp, Unity.CSharp.Editor, etc.). The build paths are all set and everything works, I can even attach VS to Unity Debugger, except only one minor flaw: when I double-click a .cs (either for editing or from a console notification), Unity will start up a new instance of Visual Studio with it’s autogen solution. Is there any way to indicate to Unity which SLN it should load and/or have some control over the generation of the solution?
Not that I know of, but I use a similar setup. What I ended up doing was keeping two copies of VS open; one for the external DLL and one for the Unity solution. That way you get to keep all the Unity integration. The added bonus is that when you build, you’re only building the DLL, not the unity solution as well (although, admittedly, that can be done in the VS build settings too).
Use these. They are part of the Visual Studio Tools for Unity API.