The suggestion by Mape is fair, but has a clear disadvantage over the HID approach that you're already taking, namely the need for a device driver.
You have provided way too little information to tell precisely why your setup is not working, but the easiest method to get to a working end solution is to start from a working base setup and iteratively expand/customize it to your needs. This can be a tricky and tedious progress. You could consider following an approach as below.
Start with a valid HID firmware. The Microchip MLA  has numerous examples for a lot of device families. The example in \apps\usb\device\hid_custom likely either supports your chip, or is easily adapted to support it. CCS may offer a similar example. Once you get it to compile, make sure the device enumerates properly (shows up in device manager, without any fault codes!).
Make sure you can communicate with the device. The example comes with a C++/CLI project. Get this to work before moving on.
Communicate with the HID device using your library of choice, i.e. your
UsbLibrary.dll. Reading from HID devices is not hard, but libraries can ease the pain of device enumeration. Personally I've successfully used 'HidLibrary' by Mike O'Brien in the past.
Now you can begin to customize the firmware. Keep your report descriptors as simple as possible and test your C# counterpart after every change to minimize your headaches. If the device no longer works, dump your device descriptor with a tool like  and carefully go over your changes.