Msbuild从主项目获取OutputPath
假设我有一个依赖于Msbuild从主项目获取OutputPath,msbuild,Msbuild,假设我有一个依赖于engine.dll的game.exe。当我构建游戏.csproj时,我希望引擎.csproj将一些内容复制到引用它的项目的输出路径。 因此,在本例中,我希望engine.csproj将某些内容复制到game.csproj 如何在engine.csproj中获取game.csproj的$(OutputPath) 我之所以想这样做,是因为我正在游戏和引擎中构建一个内容项目,如下所示: <Target Name="BuildContent"> <MSBui
engine.dll
的game.exe
。当我构建游戏.csproj
时,我希望引擎.csproj
将一些内容复制到引用它的项目的输出路径。
因此,在本例中,我希望engine.csproj
将某些内容复制到game.csproj
如何在engine.csproj
中获取game.csproj
的$(OutputPath)
我之所以想这样做,是因为我正在游戏和引擎中构建一个内容项目,如下所示:
<Target Name="BuildContent">
<MSBuild Projects="Content\Content.contentproj"
Properties="OutputPath=MAINPROJECTPATH" />
</Target>
因此,我需要指定游戏“主项目”的输出路径。首先,问题不清楚需要复制哪些额外的文件,这些文件不会使用项目间引用自动复制 如果游戏项目包含对引擎项目的项目引用(而不仅仅是DLL文件引用),msbuild应该将引擎的所有输出复制到游戏输出目录中,不是吗 如果您确实需要在项目之间手动复制文件,那么我不认为有任何简单的方法可以确定哪些项目引用当前项目,因此,通过引擎将文件推到一半和游戏(或需要包含这些文件的任何其他项目)来创建间接级别可能会更简单在剩余的过程中提取文件:
通过在一些msbuild目标中搜索,我找到了解决方案 我应该像这样通过父属性
<Target Name="BuildContent">
<MSBuild Projects="Content\Content.contentproj"
Properties="ParentOutputDir=$(ParentOutputDir);
ParentIntermediateDir=$(ParentIntermediateDir);
ParentProjectDir=$(ProjectDir);" />
</Target>
我之所以需要它,是因为我正在这样的其他项目(在csproj文件中)中构建一个项目: