2009-03-29 4 views
33

При добавлении пользовательского элемента управления или ссылки на проект VS 2008 проекта C# я могу добавить только одну конфигурацию сборки. Можно ли добавлять отдельные конфигурации в зависимости от конфигурации проекта контейнера.C#/VS2008: Добавить отдельные ссылки для отладки/выпуска для проекта

E.g. Я разрабатываю пользовательский элемент управления, и я работаю над примером приложения. Я хочу добавить пользовательский элемент управления, чтобы отладочная сборка образца использовала отладочную сборку пользовательского элемента управления и сборку релиза образца сборки релиза пользовательского элемента управления.

Любые предложения?

ответ

25

Вы можете сделать это, отредактировав файл csproj; добавьте к ссылке атрибут «Условие».

<Reference Include="Foo" Condition="'$(Configuration)'=='Debug'"/> 
<Reference Include="Bar" Condition="'$(Configuration)'=='Release'"/> 

Однако у меня возникнет проблема с тем, что это означает для модульного тестирования.

+0

Вопрос собирается использовать тот же 'UserControl', таким образом мы не можем добавить ссылку дважды, а Visual Studio не позволяет @Salvatore Previti ответить на лучший. – CallMeLaNN

5

Хотя предложение @Marc Gravell будет работать, есть ли причина, по которой вы не хотите, чтобы оба проекта были в одном решении? Если они находятся в одном и том же решении, вы можете добавить ссылку на проект, когда ссылаетесь на проект User Control на проект образца приложения. Когда используется ссылка на проект, Visual Studio автоматически добавит версию Debug для сборки Debug и версию Release для сборки Release.

+1

Если ссылочный проект находится под контролем источника отдельно (возможно, это проект библиотеки общего назначения) тогда проблемы могут возникнуть при попытке добавить проект ссылки к исходному элементу. –

31
<Reference Include="MyLibrary"> 
    <HintPath>..\$(Configuration)\MyLibrary.dll</HintPath> 
</Reference> 

Это добавить ссылку ".. \ Debug \ MyLibrary.dll", если компилируется в режиме отладки или .. \ Release \ MyLibrary.dll», если компилируется в режиме релиза.

+0

Отличный ответ + использует относительный путь, поскольку dll может находиться в папке, находящейся вне приложения. – CallMeLaNN

+0

И Visual S tudio (VS2010 в моем случае) кажется вежливым, и он не мешает таким ручным редактированию, когда один из них модифицирует проект-файл из среды IDE. В качестве теста я добавил новый класс, все отлично работало. –

Смежные вопросы