Updating Visual Studio project references programmatically

.net, visual-studio

Solution

I think a better approach to this would be to use Conditional blocks on your references inside the project file directly. Then all you need to do is set a particular flag during the msbuild for the "release" build and it will pick up the correct references.

For instance

<ItemGroup Condition="'$(IsRelease)'=='True'">
  <Reference Include="..." />
</ItemGroup>
<ItemGroup Condition="'$(IsRelease)'!='True'">
  <Reference Include="..." />
</ItemGroup>

Problem

I wish to programmatically update the references in the projects in my Visual Studio solution. I have roughly 15 projects in my solution and when I am developing/debugging I want the references to point to the projects within the solution. As part of my release procedure I sometimes need to make a copy of one project and then update the references to point to built dlls in a certain folder. I can work out the structure of the project files and how references work within them and I am thinking of building a command line tool to parse the project files and change references as required. My questions are: 1. Does this sound a sensible thing to do 2. Has anyone experience of this and/or how do they handle switching between developing and release modes 3. Does anyone have any libraries that deal with parsing Visual Studio project files. CLARIFICATION: Thanks for the responses. Perhaps I should clarify a few situations where I wish to use this. a) My application contain 15 projects. I try and keep the solution as small as possible for what I am working on, so say I have 5 projects in my solution. I now need to debug/develop one of the projects not in the solution so I add this project but I have to: - set the references in the original projects to point to project references rather than compiled dlls - change the references in the newly added project to point to the appropriate project references I would like my tool to do this automatically and the only way I know to so this at present is manipulating the project files b) As part of a service pack build procedure I take a copy of one of the projects, make the necessary code changes and build using Visual Studio. To do this I have to change all the references to the compiled dlls

Original source