У меня есть неуправляемый проект C ++, вывод которого мне нужно скопировать в папку вывода проекта .NET.
Visual Studio 2010 не позволяет мне добавлять проект C ++ в качестве ссылки на проект, поскольку он не создает управляемую сборку.
Я попытался добавить следующее в файл .csproj вручную, но, похоже, он не работает (например, при запуске msbuild, сначала создается проект .NET)
<ItemGroup>
<ProjectReference Include="pathtoproject\unmanaged.vcxproj">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
Как я могу применить эту зависимость сборки для работы со сборкой из командной строки?
Так что получается, что пример, который я привел в вопросе, на самом деле правильный. Это приведет к тому, что проект C ++ будет собран первым.
Моя проблема заключалась в том, что я пытался подключиться к целям MSBuild в проекте .NET, чтобы затем скопировать DLL C ++, и я делал это слишком рано в цикле сборки для этого проекта (я подключался к BeforeBuild). Вместо этого использование цели ‘BeforeCompile’ кажется достаточно запоздалым в цикле сборки, чтобы она работала должным образом.
Добавьте оба проекта в решение и используйте зависимости проекта, чтобы сначала был создан неуправляемый проект. Вы можете построить решение из командной строки.
Я думаю, что ваш вопрос, возможно, был дан ответ в этой теме:
Как добавить ссылку на неуправляемый проект C ++, вызываемый проектом C #?
Посмотрите на ответ SLaks