Yeah, it is possible.
You could start by adding the ChromeDriver.exe file to your Selenium project as an embedded resource. You can refer here for more details on how to do that: https://support.microsoft.com/en-us/help/319292/how-to-embed-and-access-resources-by-using-visual-c
This way, the ChromeDriver.exe gets embedded into your compiled application and upon starting the application, you just have to read that embedded resource in the form of a stream of bytes and write the same to a new file and save this file with the name ChromeDriver.exe. Now, your application will invoke ChromeDriver.exe from within itself. Finally, just instantiate the ChromeDriver class and pass the path to the newly created ChromeDriver.exe file. But just embedding ChromeDriver.exe isn't enough as you'll also need all the references, including Webdriver.dll in the folder where your application is. And, .net applications get installed just by copying the folder, but not just the file. So, you can embed all needed .dlls that you need in your project and load them whenever the application starts, but that's a huge overkill for most cases. So, rather deploy a folder instead of a single file and you'll just need to add ChromeDriver.exe to that output folder (add it to your project as a content file with the Copy Always setting). And, save all the work of invoking it from the resource.