我是MSBuild的初学者。到目前为止,我已经能够创建一个名为“MakeTextFile”的自定义任务,它根据您传递的内容属性在C:\中创建一个文本文件。这可以从命令行提示符运行。
我还将其包含在我的.targets文件中(在项目标记下):
<ItemGroup>
<AvailableItemName Include="CreateTextFileAction" />
</ItemGroup>
当我在客户端应用程序.csproj上使用Import标记时,我现在可以将项目构建操作设置为'CreateTextFileAction',但是操作永远不会触发(因为C:\上没有创建文本文件)
如何获取使用我的构建操作'CreateTextFileAction'标记的项目的所有文件路径并将它们传递到我的自定义任务?
供参考,我的.targets文件:
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<AvailableItemName Include="CreateTextFileAction" />
</ItemGroup>
<UsingTask AssemblyFile="CustomMSBuildTask.dll" TaskName="CustomMSBuildTask.MakeTextFile" />
<Target Name="MyTarget">
<MakeTextFile Contents="TODO HOW DO I GRAB MARKED FILES?" />
</Target>
</Project>
答案 0 :(得分:1)
csproj文件具有一组已定义的目标。三个主要入口点是Build,Rebuild和Clean。这些目标每个都有一组依赖项。如果您编写自己的目标作为标准csproj构建的一部分,则需要在这些依赖项中找到合适的注入点。
为了便于使用,您可以使用两个标准目标来覆盖名为BeforeBuild和AfterBuild。如果你在csproj文件中定义了这个(在导入csharp目标文件之后)并在那里调用你的自定义任务,那么它应该工作(或者至少继续前进)。
<Target Name="BeforeBuild">
<MakeTextFile Contents="TODO HOW DO I GRAB MARKED FILES?" />
</Target>