So I have a solution which contains 4 projects, a “Core” Project which is the actual application (as a class library), and 3 wrapper projects, “Console”, “WinForm” and “Service” which basically wraps a Facade class in the core class and contains various settings to handle different logging strategies for each different application (Console/Trace/File) and launch the application as either a Console, WinForms or Service, depending on how the customer wishes to deploy the application.
In the Core project I have 3 resource files which contain simple template views for the Nancy web framework. However the way Nancy looks for these views are on the current path. Since the files in the Core project aren’t on the current path for any of the 3 other projects I need a simple way to access these files across projects.
Somewhat naively I thought this was where the concept of a “Solution” came in, to handle dependencies between projects. However by searching the Internet, much to my surprise, it appears there is no elegant way to do this. The only two solutions I’ve been able to find involves copying the files to a scratch/temporary or directory in the solution, and copying them to the respective needed directories later, as post build actions, and Adding an item manually using “Add as Link”. Now while both these solutions technically work, the first leaves (possibly out-of-date) build artefacts lying about where they don’t really belong (IMHO), and the second is tedious, time-consuming and prone to human error (because you can’t just link to a directory).
Are these really my only two options, or is there some third, totally obvious way I’ve just missed because I’m new to Visual Studio?
You could use a custom IRootPathProvider in Nancy, if the only things you need are Nancy specific.
The other option is to link a folder – you can do this, but it involves manually hacking on the csproj file, there’s a few questions on here about it, including this one:
Visual Studio Linked Files Directory Structure