2012-06-25 91 views
1

我是MSBuild的初学者。到目前为止,我已经能够创建一个名为“MakeTextFile”的自定义任务,它根据您传递它的内容属性在C:\中创建一个文本文件。这是从命令行提示符运行的。如何在Visual Studio中使用自定义构建操作中的.targets文件?

我也包括这在我的.targets文件(项目标签下):

<ItemGroup> 
    <AvailableItemName Include="CreateTextFileAction" /> 
</ItemGroup> 

当我使用导入标签上的.csproj我现在可以设置的项目建设行动“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> 

回答

1

一个的csproj文件已定义的一组目标。三个主要入口点是构建,重建和清洁。这些目标每个都有一组依赖关系。如果您将自己的目标编写为标准csproj构建的一部分,则需要在这些依赖关系中找到合适的注入点。

为了便于使用,有两个标准目标供您重写,称为BeforeBuild和AfterBuild。如果你在csproj文件中定义了这个(在导入csharp目标文件之后),并在那里调用你的自定义任务,那么它应该可以工作(或者至少可以进一步移动)。

<Target Name="BeforeBuild"> 
     <MakeTextFile Contents="TODO HOW DO I GRAB MARKED FILES?" /> 
    </Target> 
相关问题