There does indeed need to be a device attached. Unlike serial ports, when you send data through USB, you're sending it through to a specific device on the bus. There isn't (that I know of) a way to send a generic pulse to all attached devices. You would first need to connect to your device, then begin using it from there.
I was disappointed at the lack of flexibility in many USB libraries (such as many lacking features in SharpUSBLib) and their dependencies on lower-level drivers such as LibUSB. So, I wrote my own. While I'd hardly call it comprehensive or complete just yet, I have used it in several commercial projects with USB devices quite successfully. It has no external dependencies, and with the exception of 2 or 3 API calls, is built in 100% managed code.
I expect to get around to making it available on my site at some point - I already have a discussion/support forum set up for it and a project set up in the issue tracker, but have been too busy with some other projects to focus much on this one.