gpt4 book ai didi

msbuild - 如何通过自定义生成操作在 Visual Studio 中使用我的 .targets 文件?

转载 作者:行者123 更新时间:2023-12-02 16:39:38 26 4
gpt4 key购买 nike

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

我还将其包含在我的 .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>

最佳答案

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

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

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

关于msbuild - 如何通过自定义生成操作在 Visual Studio 中使用我的 .targets 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11194849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com