Поддерживает ли Visual Studio 2008 настройки (отладка / сборка выпуска) конкретных ссылок? - PullRequest
3 голосов
/ 14 августа 2011

У меня есть собственный проект C ++ с одним файлом C ++ / CLI (единственный файл, скомпилированный с / CLI), я хотел бы добавить ссылку на C # DLL.

Существуют отдельные версии для отладки и выпуска, однако я могу только добавить одну ссылку, которая применяется ко всем конфигурациям. Диалоговое окно пути поиска ссылок содержит предупреждение о том, что если я попытаюсь использовать любые параметры типа $ ConfigurationName, они будут когда-либо ссылаться только на первую конфигурацию в проекте.

Итак, мои текущие идеи:

  • Объедините два проекта вместе в одном решении и добавьте ссылку на «проект», а не сборку DLL. Насколько я понимаю, Visual Studio будет соответствовать конфигурации. Не идеально, так как мой проект и DLL "принадлежат" разным областям.
  • Один проект для отладки (только с конфигурацией отладки) и проект релиза (только с конфигурацией релиза), но это похоже на ошибку.

Есть ли более понятные способы получения ссылок на конкретные конфигурации в Visual Studio 2008?

1 Ответ

2 голосов
/ 14 августа 2011

Обычно я задаю путь вывода для всех проектов в одном и том же месте в зависимости от конфигурации.Например, для релизных сборок все идет в / path / to / Release и для Debug в / path / to Debug.Затем я вручную редактирую файл проекта, чтобы включить отдельный файл целей, содержащий что-то вроде этого:

edit показывает, как использовать условия для выбора dll отладки / выпуска с префиксом

<-- file myDll.targets -->
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
  <ItemGroup  Condition=" '$(Configuration)' == 'Debug' ">
    <Reference Include="myDll_d">
      <Private>False</Private>
    </Reference>
  </ItemGroup>
  <ItemGroup  Condition=" '$(Configuration)' == 'Release' ">
    <Reference Include="myDll">
      <Private>False</Private>
    </Reference>
  </ItemGroup>
</Project>

Затем в проект, который должен ссылаться на эту dll, включен файл целей:

<Import Project="myDll.targets"/>

Из-за Private=false msbuild не будет пытаться что-либо копировать, он просто ищет myDll.dllи найдет его в выходном пути.

Это не особо чисто, но работает.Файл целей также можно изменить, чтобы он ссылался на разные платформы (x86 / x64).

Ваша первая идея, вероятно, состоит в том, что в основном используется, поскольку требует меньше хлопот - за исключением того, что проекты должны быть в одном решении.(насколько я знаю);

...