Для авторизации пользователей я хочу только указать конкретный модуль для каждого пользователя. Поэтому я сконфигурировал условную компиляцию, подобную этой
<DefineConstants>TRACE;DEBUG;SAMPLECONSTANT1</DefineConstants>
и отредактировал файл проекта следующим образом:
<ProjectReference Include="..\Solution1.Modules.Module1\Solution1.Modules.Module1.csproj" Condition="$(DefineConstants.Contains('SAMPLECONSTANT1'))">
<Project>{4E378BD0-4FF8-4160-9331-1ECBFD2B6F30}</Project>
<Name>Solution1.Modules.Module1</Name>
</ProjectReference>
В этом случае я хочу добавить ссылку на проект Module1
, если DefineConstants
содержит SAMPLECONSTANT1
; но независимо от того, что я положил в DefineConstants
, решение всегда загружает проект Module1
. Что я сделал здесь неправильно?
ОБНОВЛЕНИЕ: На самом деле мой код верен. См. Ответ J0e3gan. Пользовательский интерфейс Visual Studio не отражает условные ссылки в папке References
проекта. Поэтому все ссылки видны в любой заданной конфигурации или выборе платформы. С другой стороны, компилятор и IntelliSense знают об условных ссылках, соблюдая правильные настройки как с визуальной обратной связью, так и с уведомлением об ошибках во время сборки.