gpt4 book ai didi

msbuild - 在 MSBuild 任务中输出解决方案中的所有文件

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

在 MSBuild 中,我想调用一个任务来提取特定解决方案中所有项目中的所有文件,并将这些文件保存在可以传递给其他任务(用于处理等)的属性中

我在想一些事情:

<ParseSolutionFile SolutionFile="$(TheSolutionFile)">
<Output TaskParameter="FilesFound" ItemName="AllFilesInSolution"/>
</ParseSolutionFile>

<Message Text="Found $(AllFilesInSolution)" />

这将输出解决方案中项目中所有文件的列表,我可以使用 AllFilesInSolution 属性作为其他分析任务的输入。这是一个已经存在的任务还是我需要自己构建它?如果我需要自己构建它,任务是否应该输出一个字符串数组或 ITaskItems 数组或其他内容?

最佳答案

我不知道任务,但已经有包含所有项目的属性。只需查看您的典型项目文件,您就会看到它们被添加到哪个集合。

注意属性Content, Compile, Folder...任何时候你添加一个文件到一个项目,它会被放在一个像这样的主要集合:

<ItemGroup>
<Content Include="Default.aspx" />
<Content Include="Web.config" />
</ItemGroup>
<ItemGroup>
<Compile Include="Default.aspx.cs">
<SubType>ASPXCodeBehind</SubType>
<DependentUpon>Default.aspx</DependentUpon>
</Compile>
<Compile Include="Default.aspx.designer.cs">
<DependentUpon>Default.aspx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<Folder Include="App_Data\" />
</ItemGroup>

然后您可以像这样将现有属性的值放入您的属性中(Condition 属性充当过滤器):

<CreateItem Include="@(Content)" Condition="'%(Extension)' == '.aspx'">
<Output TaskParameter="Include" ItemName="ViewsContent" />
</CreateItem>

或者您可以手动完成(Include 属性使用现有属性 OutputPath,但它表示包含所有文件的路径):

<CreateItem Include="$(OutputPath)\**\*">
<Output TaskParameter="Include" ItemName="OutputFiles" />
</CreateItem>

在处理自定义构建任务和非常有用的内容时,我在 MSDN MSBuild 文档中阅读了更多详细信息。继续阅读 CreateItem 任务,您将能够更清楚地理解我在此处发布的内容。这真的很容易上手。

关于msbuild - 在 MSBuild 任务中输出解决方案中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/258218/

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