Ответ от WaffleSouffle определенно будет лучшим, если вы используете Release- и Debug-папку, как говорится в первоначальном вопросе.
Кажется, есть еще один вариант, который не так очевиден, потому что VS (VS2010) не показывает его в IntelliSense при редактировании файла csproj.
Вы можете добавить условие к HintPath-элементу. Как это:
<Reference Include="MyLib">
<HintPath Condition="'$(Configuration)'=='Release'">..\lib\MyLib.dll</HintPath>
<HintPath Condition="'$(Configuration)'=='Debug'">..\lib\Debug\MyLib.dll</HintPath>
</Reference>
Я нашел статью Вивека Ратода, описывающую вышеупомянутый подход, в http://blog.vivekrathod.com/2013/03/conditionally-referencing-debug-and.html.
Я проверил файл схемы XMS для файла проекта по адресу:
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild \ Microsoft.Build.Core.xsd
а также:
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild \ Microsoft.Build.Commontypes.xsd
Я не вижу, чтобы Condition был поддерживаемым атрибутом для HintPath-элемента, но, похоже, он работает .....
РЕДАКТИРОВАТЬ 1:
Это не приводит к тому, что ссылка отображается дважды в Visual Studio, что является проблемой с принятым ответом.
РЕДАКТИРОВАТЬ 2:
На самом деле, если вы вообще опустите HintPath, Visual Studio будет искать в выходной папке проектов. Таким образом, вы можете сделать это:
<Reference Include="MyLib">
<!-- // Removed HintPath, VS looks for references in $(OutDir) -->
</Reference>
Порядок поиска указан в файле Microsoft.Common.targets
Увидеть:
HintPath и ReferencePath в Visual Studio