When it works. It works. When it fails you're in for a world of pain. A lot is going on behind the scenes. The data structures, classes need special annotations to carefully translate the c# structures into something that cuda understands. You have to pay special attention to your object hierarchy, you have to be aware of all C# keywords that are supported and not supported. The fields in your class may be misaligned by a few bytes of the wrong annotation is used.
Don't get me started on cuda pointers - you're not shielded from this. My experience with this has put me off cuda frameworks in general.
You're better off learning cuda or hiring a cuda Dev than investing heavily in stacks like this.
My background is in HPC in finance.