As mentioned already, it’s not possible to compile a dynamo graph. But why compile a graph in the first place? This defeats the whole point of what Dynamo (and to the same extent, Grasshopper) is all about.
A graph is first and foremost a dynamic solution. You can change a single node, re-run the graph and get instant feedback. It’s the polar opposite of a static compiled solution. It can quickly be adapted to an evolving problem and grow together with your project. You can “debug” it fairly easily, because when an issue occurs, the problematic nodes hopefully get highlighted.
On the other hand, a plugin is pretty much a rigid black box that does something under the hood and produces a result in the end. As an end user, if you have a complex multi-step process, how can you easily verify the intermediate steps? You have to take the result at face value or do a ton of testing to make sure that waht you got is in the expected range.
And what do you do if you want something slightly different? If you’re lucky and have the source and the skills, you change the code, recompile, restart revit multiple times, re-deploy to all the users and so on and so forth… If you don’t have the code, or the original plugin developer isn’t interested in supporting you, you’re pretty much screwed.
Obviously, a graph’s dynamic behaviour comes at a price. You loose some performance, portability becomes more challenging and you may experience an occasional stability issue. But that’s life - you can’t have your cake and eat it too… If you’re not willing to sacrifice on any of those, then a scripted solution is not the right one for your workflow.
As a consultant, one of your main responsibilities is to inform your client of the possibilities, the advantages and disadvantages of each, understand the client’s needs and give your honest recommendation on the best course of action. You don’t nickel-and-dime them to death or you can be sure you’re never hearing back from them again.
If they’re paying you for a specific solution and not a one-time service, you better make sure that they get the entirety of what you agreed on and not just a mistery button that possibly just works. No sane person is going to keep working with you otherwise…
If you do a good job and if your client is smart, they’ll hire you again, ask to be trained or even offer you a permanent position. Remember what the I in BIM stands for. Your clients-to-be are now more informed than ever before. Our field is emerging into a new age and open and dynamic solutions like Dynamo, that try to empower the end user, have opened up countless new possibilities and have liberated a new generation of power users. Embrace it and you’ll have a place in that future or try and fight it and be left behind.
TLDR: don’t be a prick, treat your clients with the respect they deserve and you’ll get treated in kind. And if they do you wrong, it’s probably for the better not having to deal with those people ever again.