确保在使用msbuild的.NET项目之前构建C ++项目

时间:2013-02-05 03:09:52

标签: c++ .net msbuild

我有一个非托管的C ++项目,我需要将其输出复制到.NET项目的输出文件夹中。

Visual Studio 2010不允许我将C ++项目添加为项目参考,因为它不会创建托管程序集。

我已尝试手动将以下内容添加到.csproj文件中,但它似乎无法正常工作(例如,运行msbuild时,首先构建.NET项目)

<ItemGroup>
    <ProjectReference Include="pathtoproject\unmanaged.vcxproj">
        <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
        <Private>False</Private>
    </ProjectReference>
</ItemGroup>

如何强制执行此构建依赖项以使用命令行构建?

3 个答案:

答案 0 :(得分:2)

事实证明,我在问题中给出的例子实际上是正确的。这将导致首先构建C ++项目。

我的问题是我试图连接到.NET项目中的MSBuild目标,然后复制C ++ dll,我在该项目的构建周期中做得太早了(我正在挂钩到BeforeBuild )。在构建周期中使用'BeforeCompile'目标似乎已经足够晚了,它可以正常工作。

答案 1 :(得分:1)

将两个项目添加到解决方案中并使用项目依赖项来确保首先构建非托管项目。您可以从命令行构建解决方案。

Project Dependencies Dialog

答案 2 :(得分:0)

我相信您的问题可能已在此主题中得到解答:

How do I add a reference to an unmanaged C++ project called by a C# project?

看看SLAK回答