MSBuild在同一表达式中生成多个元数据请求
我正在编写第一个MSBuild脚本,但遇到了一个问题 我有几个项目,在一个项目组中定义MSBuild在同一表达式中生成多个元数据请求,msbuild,Msbuild,我正在编写第一个MSBuild脚本,但遇到了一个问题 我有几个项目,在一个项目组中定义 <ItemGroup> <Projects Include="Project1Dir\Project1.csproj"/> <Projects Include="Project2Dir\Project2.csproj"/> </ItemGroup> 然后,在部署步骤中,我尝试执行以下操作: 以下内容应将所有要部署的文件收集到每个项目的单独项目组(“
<ItemGroup>
<Projects Include="Project1Dir\Project1.csproj"/>
<Projects Include="Project2Dir\Project2.csproj"/>
</ItemGroup>
然后,在部署步骤中,我尝试执行以下操作:
以下内容应将所有要部署的文件收集到每个项目的单独项目组(“Project1deploymentFiles”和“Project2deploymentFiles”)
这一行应该将每个项目的文件复制到单独的文件夹中
<Copy SourceFiles="@(%(Projects.Filename)deploymentFiles)" DestinationFolder="$(DeploymentDir)\%(Projects.Filename)\%(RecursiveDir)\" />
但MSBuild似乎将%(RecursiveDir)元数据解析为空字符串,因为所有文件都复制到同一根文件夹中(每个项目不同)
有什么建议我做错了什么吗?我自己也找到了解决办法:
<CreateItem Include="$(WebPublishDir)\%(Projects.Filename)\**\*.*" AdditionalMetadata="ProjectDir=%(Projects.Filename)\">
<Output ItemName="deploymentFiles" TaskParameter="Include"/>
</CreateItem>
<Copy SourceFiles="@(deploymentFiles)" DestinationFolder="$(DeploymentDir)\%(ProjectDir)\%(RecursiveDir)\" />
这里的主要思想是对所有项目使用一个项目,只需向值添加额外的元数据,其中包含projectname我自己找到了一个解决方案:
<CreateItem Include="$(WebPublishDir)\%(Projects.Filename)\**\*.*" AdditionalMetadata="ProjectDir=%(Projects.Filename)\">
<Output ItemName="deploymentFiles" TaskParameter="Include"/>
</CreateItem>
<Copy SourceFiles="@(deploymentFiles)" DestinationFolder="$(DeploymentDir)\%(ProjectDir)\%(RecursiveDir)\" />
这里的主要思想是对所有项目使用一个项,只需向包含projectname的值添加额外的元数据