Ответ 1
Я подозреваю, что проблема заключается в том, что вы настраиваете ссылку на проект на Module1
, а не на включение Module1
в решение.
Включение проекта в решение (и, следовательно, загрузка его с помощью решения) и проект, ссылающийся на другой проект в решении, - это, конечно, две разные вещи.
UPDATE:
Если вы действительно хотите уточнить ссылку на проект, Joe Wrobel написал связанный пост в блоге, который должен помочь. Ключевым выводом является обертка ItemGroup
, которая содержит условие ProjectReference
в элементе Choose
- например:
<Choose>
<When Condition="$(DefineConstants.Contains('SAMPLECONSTANT1'))">
<ItemGroup>
<ProjectReference Include="..\Solution1.Modules.Module1\Solution1.Modules.Module1.csproj">
<Project>{4E378BD0-4FF8-4160-9331-1ECBFD2B6F30}</Project>
<Name>Solution1.Modules.Module1</Name>
</ProjectReference>
<!-- other ProjectReference elements -->
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<!-- other ProjectReference elements -->
</ItemGroup>
</Otherwise>
</Choose>
Из моих тестов этим вечером это отлично работает, чтобы определить ссылку на проект о том, определена ли константа как SAMPLECONSTANT1
. Обратите внимание, что условные ссылки проекта не отображаются в Обозревателе решений в (потенциальной) ссылке на справочную папку проекта - независимо от того, определена ли константа кондиционирования.
Чтобы убедиться, что работа по настройке работала, мне пришлось построить: с SAMPLECONSTANT1
, проект успешно создан при использовании класса, определенного в Module1
- как и ожидалось; и без SAMPLECONSTANT1
, проект ссылки не смог построить, потому что класс, определенный в Module1
, не мог быть разрешен - также как и ожидалось.