If two separate applications need a set of common functionality, you're dead on the money in that you should refactor that common code into a library referenced by both. I think you'll save yourself a lot of headaches in the future this way.
My company has certain libraries that are variously called from our webapp, windows services, and even the odd scheduled task or console app. Each of these sources has different security requirements, different operating models (e.g., stateless public websites using ASP .Net Membership users versus stateful private console apps running as domain users or service accounts), and are hosted on different machines or machine types (e.g., cloud vs. local). Properly setting up your solutions and project references mean that MSBuild can do the deployments for you without having to worry about crossing all the various boundaries mentioned above.