пятница, 13 марта 2009 г.

Release/Debug References

В Visual Studio, если один проект, назовем его SomeExe, в солюшне ссылается на другой, назовем его SomeDll, то в режиме Release SomeExe будет использовать релизную версию dll-ки SomeDll, а в дебажной - дебажную. Но что если мы не хотим иметь Reference на проект, а хотим/можем ссылаться на dll? Как тогда сделать так, чтобы в релизе наш проект ссылался на релизную сборку, а в дебаге - на дебажную?
Могу предложить следующий, довольно удобный вариант:
Пусть у нас имеется некторый путь к папке. Создадим в ней две подпапки "Release" и "Debug" и положим в них релизную и дебажную версию dll-ки, как, собственно, и поступает студия по умолчанию. Далее добавляем в проект (SomeExe) Reference на одну из этих версий, предположим на дебажную. Сохраняемся.
Открываем файл проекта в текстовом редакторе и находим следующий тег:
<ItemGroup>
  <Reference Include="SomeDll, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
   <SpecificVersion>False</SpecificVersion>
   <HintPath>[некоторый путь]\Debug\SomeDll.dll</HintPath>
  </Reference>
</ItemGroup>

* This source code was highlighted with Source Code Highlighter.


Исправляем в пути слово Debug на студийный макрос $(ConfigurationName) и получаем нечто следующее:
<ItemGroup>
  <Reference Include="SomeDll, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
   <SpecificVersion>False</SpecificVersion>
   <HintPath>[некоторый путь]\$(ConfigurationName)\SomeDll.dll</HintPath>
  </Reference>
</ItemGroup>

* This source code was highlighted with Source Code Highlighter.

и это будет работать

Hello, world!

В этом блоге я буду писать на любые темы, относящиеся к программированию