【发布时间】:2017-05-11 01:55:47
【问题描述】:
我有一个具有 AfterBuild 的通用目标文件。目标文件处于解决方案级别。所有 csproj 使用 <Import Project=$(SolutionDir)\custom.targets 文件导入自定义目标文件。但是 custom.targets 中的 afterbuild 永远不会为任何 csproj 运行。我在这里错过了什么?
自定义目标文件具有以下内容
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<OutputTargets Include="$(TargetDir)$(TargetName).???" />
<OutputSatellites Include="$(TargetDir)\**\$(TargetName).resources.dll" />
</ItemGroup>
<Target Name="AfterBuild">
<Copy SourceFiles="@(OutputTargets)" DestinationFiles="@(OutputTargets->'$(SolutionDir)Test.WebApp\Config\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(OutputSatellites)" DestinationFiles="@(OutputSatellites->'$(SolutionDir)Test.WebApp\Config\%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
</Project>
Above Target 文件被导入到解决方案中的每个 csproj。
【问题讨论】:
-
您应该如何完成“AfterBuild”目标?是通过 DependsOnTargets、AfterTargets 还是名为“AfterBuild”的目标?项目中相对于 Microsoft.CSharp.targets 的导入在哪里?
-
它是一个目标名称AfterBuild,它在CShsrp.targets之后按导入顺序
-
听起来应该可以。一个可能的解决方法是我的建议 here 使用 AfterTargets="Build"。
-
我的 .targets 文件中具有 AfterBuild 目标的 Aftertarget 属性?注意目标文件作为 csproj 的一部分导入,我使用 msbuild 编译解决方案文件。
-
是 AfterTargets 是自定义 Target 元素上的一个属性。然后,您可以为目标命名任何您想要的名称。