Msbuild 如何将Visual Studio中的.targets文件用于自定义生成操作?

Msbuild 如何将Visual Studio中的.targets文件用于自定义生成操作?,msbuild,msbuild-task,Msbuild,Msbuild Task,我是MSBuild的初学者。到目前为止,我已经能够创建一个名为“MakeTextFile”的自定义任务,该任务根据您传递的内容属性在C:\中创建一个文本文件。这可以在命令行提示符下运行 我还将其包含在我的.targets文件中(在项目标记下): 当我在客户端应用程序.csproj上使用导入标记时,我现在可以将items build actions设置为“CreateTextFileAction”,但是该操作不会触发(因为C:\上没有创建文本文件) 如何获取用生成操作“CreateTextFi

我是MSBuild的初学者。到目前为止,我已经能够创建一个名为“MakeTextFile”的自定义任务,该任务根据您传递的内容属性在C:\中创建一个文本文件。这可以在命令行提示符下运行

我还将其包含在我的.targets文件中(在项目标记下):


当我在客户端应用程序.csproj上使用导入标记时,我现在可以将items build actions设置为“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>

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

为了便于使用,有两个标准目标供您覆盖,分别称为BeforeBuild和AfterBuild。如果您在csproj文件中定义了这一点(在导入csharp目标文件之后),并在其中调用了自定义任务,那么它应该可以工作(或者至少可以继续工作)


<?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>
   <Target Name="BeforeBuild">
       <MakeTextFile Contents="TODO HOW DO I GRAB MARKED FILES?" />
   </Target>