Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MSBuild在同一表达式中生成多个元数据请求_Msbuild - Fatal编程技术网

MSBuild在同一表达式中生成多个元数据请求

MSBuild在同一表达式中生成多个元数据请求,msbuild,Msbuild,我正在编写第一个MSBuild脚本,但遇到了一个问题 我有几个项目,在一个项目组中定义 <ItemGroup> <Projects Include="Project1Dir\Project1.csproj"/> <Projects Include="Project2Dir\Project2.csproj"/> </ItemGroup> 然后,在部署步骤中,我尝试执行以下操作: 以下内容应将所有要部署的文件收集到每个项目的单独项目组(“

我正在编写第一个MSBuild脚本,但遇到了一个问题

我有几个项目,在一个项目组中定义

<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的值添加额外的元数据