Поддерживает ли Visual Studio 2008 настройки (отладка / сборка выпуска) конкретных ссылок?
У меня есть собственный проект C++ с одним файлом C++/CLI (единственный файл, скомпилированный с /CLI), я хотел бы добавить ссылку на C# DLL.
Существуют отдельные версии для отладки и выпуска, но я могу только добавить одну ссылку, которая применяется ко всем конфигурациям. Диалоговое окно пути поиска ссылок содержит предупреждение о том, что если я попытаюсь использовать какие-либо параметры типа $ConfigurationName, они будут когда-либо ссылаться только на первую конфигурацию в проекте.
Итак, мои текущие идеи:
- Объедините два проекта вместе в одном решении и добавьте ссылку на "проект", а не сборку DLL. Насколько я понимаю, Visual Studio будет соответствовать конфигурации. Не идеально, так как мой проект и DLL "принадлежат" разным областям.
- Один проект для отладки (только с конфигурацией отладки) и проект выпуска (только с конфигурацией выпуска), но это похоже на упущение.
Какие-нибудь более чистые способы достигнуть определенных ссылок конфигурации в Visual Studio 2008?
1 ответ
Обычно я задаю путь вывода для всех проектов в одном и том же месте в зависимости от конфигурации. Например, для релизных сборок все идет в /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).
Ваша первая идея, вероятно, заключается в том, что в основном используется, поскольку требует меньше хлопот, за исключением того, что проекты должны быть в одном решении (насколько я знаю);