Visual studio 如何强制MSBuild不部分生成目标?
我有一个构建过程,它执行以下操作:Visual studio 如何强制MSBuild不部分生成目标?,visual-studio,msbuild,msbuild-task,Visual Studio,Msbuild,Msbuild Task,我有一个构建过程,它执行以下操作: 在多个(比如10个)COM DLL(一组命名的任务项)上运行TLBIMP。这是我使用Exec任务的“导入”目标 在10个互操作程序集上运行ILDASM。这是我使用Exec任务的“反汇编”目标 运行自定义任务以同时获取所有10个IL文件并对其执行一些操作(详细信息不重要,但此任务必须同时处理所有10个IL文件)。这是我的“工作”目标 使用ILASM将10个IL文件重新组装回10个DLL。这是我的“汇编”目标,使用Exec任务 运行ILMerge将10个程序集合并
是否有一种方法可以“强制”MSBuild仅针对一个目标(上面的步骤3)运行传递所有输入的任务,而不仅仅是过时的输入?我不想将自定义任务的代码更改为硬编码文件名,我希望它们作为MSBuild脚本中的TaskItems提供,但必须为自定义任务提供从COM DLL的原始TaskItem组派生的所有输入,而不仅仅是使用此特定构建重新生成的输入。我想我找到了一种方法。我可以这样定义一个组:
<ItemGroup>
<PrelimIL Include="$(IntermediateOutputPath)intermediate\*.il"/>
</ItemGroup>
然后在我的“分解”目标中,有第二个任务:
<Touch Files="@(PrelimIL)" />
在执行目标之前触摸文件似乎是正确的。由于最近(通过触摸)修改了输入文件,因此所有输出都完全重建了目标。 您可以使用的另一种方法是创建一个目标,即,CleanIntFiles,该目标将删除这些文件。然后,您可以将该目标放置到BeforeBuildDependsOn属性中 有关如何扩展该属性的更多信息,请参阅我的文章 赛义德·易卜拉欣·哈希米 我的书: