I am still having a lots of gaps in my understanding of VS solutions. Probably because I just don't know them, and I have different ways to do stuff.
So how would the following work as a "vs solution"?
Maybe you wouldn't use the way I describe below, then the question is what way would you use?
I have 2 apps that form a client/server pair. So if I had them in VS, I assume I would have ONE solution for them?
- The server app uses a "package" (a set of units/files/...) ServerUtils
- The client app uses a package ClientUtils
- Both packages have units of the same name.
So the Server uses "unit Connections" from the ServerUtils package.
The Client uses "unit Connections" from the ClientUtils package.
Both client and server use some shared files (not in a package). Those files refer to functions in above unit Connection.
If I want to navigate code, the IDE must know which of the 2 apps I am working on.
So in Lazarus, if I have the client project open, then if I encounter the name of a function from unit Connection, I expect code navigation to go to the unit in ClientUtils.
But if I have the server app project open, then it should go the unit in ServerUtils.
In a similar way, client and server may have different compiler defines -dCLIENTCODE -dSERVERCODE => so in shared files, different code is active. And the IDE has to correctly highlight that, and correctly navigate.
How do I do that in a VS Solution?
Also the above has of course test cases.
So if I press run then ... well
- If I press run for either the client or server, I need an instance of the other. I could configure that, but I usually do that by hand.
Since often changes were made for testing one of the two, and those are either not needed in the other (or even not working in the other / so definitely need a way to prevent the other from rebuild), I usually only want to build the one I am working on. And I want the other one to be as it already is on disk.
Of course if I wanted both to be build, then that would need some tweaks (I never tried, but I think it can be done)
- If I run either test case, then I want to build and run ONLY that, and nothing else.
How does a solution behave for those tasks?