В поисках решения той же проблемы, что и у вас, я пришел к предлагаемому решению о наличии условия в ItemGroup. Но это имело побочный эффект, потому что в ссылках Visual Studio я мог видеть обе ссылки, что также повлияло на ReSharper.
Я, наконец, использую «Выбрать, когда в противном случае», и у меня больше нет проблем с ReSharper и Visual Studio, показывающими две ссылки.
<Choose>
<When Condition=" '$(Configuration)' == 'client1DeployClickOnce' ">
<ItemGroup>
<ProjectReferenceInclude="..\client1\app.Controls\app.Controls.csproj">
<Project>{A7714633-66D7-4099-A255-5A911DB7BED8}</Project>
<Name>app.Controls %28Sources\client1\app.Controls%29</Name>
</ProjectReference>
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<ProjectReference Include="..\app.Controls\app.Controls.csproj">
<Project>{2E6D4065-E042-44B9-A569-FA1C36F1BDCE}</Project>
<Name>app.Controls %28Sources\app.Controls%29</Name>
</ProjectReference>
</ItemGroup>
</Otherwise>
</Choose>
Вы можете прочитать больше об этом в моем блоге: Ссылка на проект с условием в вашем файле проекта MSBuild