Jam*_*mes 5 msbuild msbuild-task
我是 MSBuild 的初学者。到目前为止,我已经能够创建一个名为“MakeTextFile”的自定义任务,它根据您传递的内容属性在 C:\ 中创建一个文本文件。这可以从命令行提示符运行。
我也将它包含在我的 .targets 文件中(在项目标签下):
<ItemGroup>
<AvailableItemName Include="CreateTextFileAction" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
当我在客户端应用程序 .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>
Run Code Online (Sandbox Code Playgroud)
csproj 文件具有一组已定义的目标。三个主要入口点是构建、重建和清理。这些目标各自具有一组依赖关系。如果您将自己的目标编写为标准 csproj 构建的一部分,则需要在这些依赖项中找到合适的注入点。
为了便于使用,有两个标准目标可供您覆盖,称为 BeforeBuild 和 AfterBuild。如果您在 csproj 文件中定义它(在导入 csharp 目标文件之后)并在其中调用您的自定义任务,那么它应该可以工作(或者至少进一步前进)。
<Target Name="BeforeBuild">
<MakeTextFile Contents="TODO HOW DO I GRAB MARKED FILES?" />
</Target>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14293 次 |
| 最近记录: |