MSBUILD配置:将输出复制到临时区域

MSBUILD配置:将输出复制到临时区域,msbuild,Msbuild,好吧,我不是MSBUILD的高手。事实上,我什么都不知道。我需要一些帮助来配置解决方案文件,以便告诉MSbuild将编译后的输出复制到临时区域。该解决方案有大约35个项目。我所需要的只是在发布模式下将其中大约5个文件复制到staging文件夹。请假设我什么都不知道 谢谢您可以创建一个如下所示的目标: <Target Name="CopyFiles" DependsOnTargets="YourBuildTargets"> <CreateItem Include="You

好吧,我不是MSBUILD的高手。事实上,我什么都不知道。我需要一些帮助来配置解决方案文件,以便告诉MSbuild将编译后的输出复制到临时区域。该解决方案有大约35个项目。我所需要的只是在发布模式下将其中大约5个文件复制到staging文件夹。请假设我什么都不知道


谢谢

您可以创建一个如下所示的目标:

<Target Name="CopyFiles" DependsOnTargets="YourBuildTargets"> <CreateItem Include="YourSolutionPath\bin\$(Configuration)\*.*"> <Output ItemName="YourProjectOutputFiles" TaskParameter="Include"></Output> </CreateItem> <Copy SourceFiles="@(YourProjectOutputFiles)" DestinationFolder="$(DestinationFolder)"></Copy> </Target> 这将创建一个名为
CopyFiles
的目标,该目标取决于
YourBuildTargets
的完成情况(您可以在其中放置多个依赖项,用分号分隔)。它描述了一个项目,其中包括项目目录中的所有文件(**)。然后运行
Copy
命令,并将该项描述的文件复制到目标文件夹。如果有很多项目都是由1个MSBuild脚本生成的,那么每个项目都有一个
CreateItem
节点来索引文件,还有一个相应的
Copy
节点来执行复制

或者,如果您只想对每个项目单独执行此操作,只需将此块放在每个.csproj文件中即可


现在,只需将
CopyFiles
目标包含在脚本生成的目标列表中。

这会进入解决方案文件吗?如何设置“YourProjectOutputFiles”?否。csproj文件是MSBuild脚本。将其放入要在其上运行副本的每个.csproj文件中。“YourProjectOutputFiles”只是项的输出名称,您不需要更改它。如果您只是通过将代码放入每个.csproj文件来执行此操作,则可能应该将CreateItem节点上的include属性更改为类似“$(TargetDir)*.*”的内容,并且,您需要更改“复制”节点上的DestinationFolder属性,以指向您希望文件移动的位置。如果您使用visual studio,您也可以通过右键单击并转到每个项目的“属性”,转到“生成事件”选项卡,并将命令添加到“生成后事件命令行”来完成所有这些操作。这只接受标准命令,如果点击“编辑”按钮,可以插入一些简单的宏来帮助您获得正确的目录。我不知道您是在visual studio中执行此操作的,我以为您需要MSBuild脚本。