Попробуйте добавить ссылку на проект C ++ в проект C # после очистки решения. Это работает для меня, хотя я случайно наткнулся на этот «обходной путь».
Для меня это выглядит так, как будто Visual Studio проверяет продукт сборки ссылочного проекта, и когда он замечает несовместимость, он откажется добавить ссылку. Однако, если продукт для сборки не проверяется (потому что вы очистили решение), Visual Studio с радостью добавляет ссылку.
Я протестировал получившееся решение как в Visual Studio, так и на нашем сервере сборки TFS (который AFAIK использует MSBuild
), и зависимости сборки были правильно оценены в обоих случаях.
В вашем вопросе вы также упоминаете, что ручное редактирование файла .csproj
не помогло. Я не могу подтвердить это. Я смог добавить следующую ссылку и снова получил положительный результат сборки:
<ProjectReference Include="..\Foo\Foo.vcxproj">
<Name>Foo</Name>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<Private>False</Private>
</ProjectReference>
Я добавляю элемент ReferenceOutputAssembly
, потому что эта статья blogs.msdn.com предлагает это. Однако, по моему опыту, сборка также работает без элемента. Статью все еще стоит прочитать, потому что она объясняет , почему MSBuild
не учитывает зависимости, определенные в решении.
Для полноты картины: я использую Visual Studio 2010 версии 10.0.40219.1 SP1Rel
.