说我的game.exe
取决于engine.dll
。当我构建game.csproj
时,我希望engine.csproj
将一些内容复制到引用它的项目的OutputPath。
因此,在此示例中,我希望engine.csproj
将某些内容复制到game.csproj
的 OutputPath
如何在game.csproj
中获取engine.csproj
的$(OutputPath)?
我想这样做的原因是因为我正在游戏和引擎中构建一个内容项目,如下所示:
<Target Name="BuildContent">
<MSBuild Projects="Content\Content.contentproj"
Properties="OutputPath=MAINPROJECTPATH" />
</Target>
所以我需要将 OutputPath 指定为游戏的“主项目”。
答案 0 :(得分:4)
在一些msbuild目标中有一点点,我找到了解决方案。
我应该像这样传递父属性
<Target Name="BuildContent">
<MSBuild Projects="Content\Content.contentproj"
Properties="ParentOutputDir=$(ParentOutputDir);
ParentIntermediateDir=$(ParentIntermediateDir);
ParentProjectDir=$(ProjectDir);" />
</Target>
答案 1 :(得分:1)
首先,从问题中确切地说明您需要复制哪些额外文件并不会使用项目间参考自动发生。
如果Game项目包含一个项目引用(而不仅仅是一个DLL文件引用)到Engine项目,msbuild应该将Engine的所有输出复制到Game输出目录中,不是吗?
如果你确实需要在项目之间手动复制文件,那么我不相信有任何简单的方法可以找出哪些项目引用了当前的项目,因此在引入Engine时创建一个间接级别可能更简单文件的一半和游戏(或任何其他需要包含这些文件的项目)在剩下的方式拉动文件: