重新评估一个MSBuild项目组。

3

我有一个包含位置信息的项目组,该位置可能包含文件,也可能没有。如果在声明项目组时该位置没有文件,那么是否可以在以后重新评估项目组,以获取可能在新位置生成的文件,或者我必须在此时声明一个完全相同的项目组并使用它?

3个回答

9

在静态方式下(作为的子元素声明在Target之外),项目组会在文件加载时被评估。在动态方式下(在<Target>内声明),项目组将在执行通过目标时被评估。对于在构建期间创建文件的情况,您真的应该使用动态项目组。


我的项目组在一个目标中声明,我想在同一个目标中稍后评估该项目组。 - Joe Cartano

4

我认为你需要创建一个新的ItemGroup。它们只会被评估一次并且值会被保存,而不是用于选择文件的公式。因此,你无法“重新评估”这些项。


这就是我最终做的事情。我想知道为什么没有办法做到这一点。 - Joe Cartano

0
您可以通过首先删除项目,然后重新包含项目来重新定义ItemGroup:
<Target Name="Later on" >
   <ItemGroup>
      <ClCompile Remove="@(ClCompile)" />
      <ClCompile Include="something here of your choice" />
   </ItemGroup>
</Target>

或者如果您不想删除任何项目,也可以简单地将新项目追加或添加到先前存在的项目组中:

<Target Name="Later on" >
   <ItemGroup>
      <ClCompile Include="Add Even more stuff" />
   </ItemGroup>
</Target>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接