gpt4 book ai didi

msbuild - 在 MSBuild 脚本中获取文件大小

转载 作者:行者123 更新时间:2023-12-01 12:51:41 26 4
gpt4 key购买 nike

我可以在不编写自己的代码的情况下从 MSBuild 脚本中找出一组文件的大小吗?

MSBuild 本身在个别项目上有一些元数据(例如,上次修改时间为 %(ModifiedTime)), 但没有尺码。我在 http://msbuildextensionpack.com/ 看不到任何东西.

编辑:根据 Seva 的回答,这是一个返回项目数组总大小的内联任务:

<UsingTask TaskName="GetFileSize" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<Files ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
<TotalSize ParameterType="System.Int64" Output="true"/>
</ParameterGroup>
<Task>
<Using Namespace="System.IO"/>
<Code Type="Fragment" Language="cs"><![CDATA[
long l = 0;
foreach (var item in Files) {
var fi = new FileInfo(item.ItemSpec);
l += fi.Length;
}
TotalSize = l;
]]></Code>
</Task>
</UsingTask>

最佳答案

您实际上可以使用 inline tasks 在 msbuild 项目中使用 .Net API 的子集.

例如以下打印出单个文件的文件大小:

<UsingTask TaskName="GetFileSize" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<FileName Required="true" />
<FileSize ParameterType="System.Int64" Output="true"/>
</ParameterGroup>
<Task>
<Using Namespace="System.IO"/>
<Code Type="Fragment" Language="cs"><![CDATA[
FileInfo fi = new FileInfo(FileName);
FileSize = fi.Length;
]]></Code>
</Task>
</UsingTask>

<Target Name="PrintFileSize" >
<GetFileSize FileName="$(MyFileName)">
<Output TaskParameter="FileSize" PropertyName="MyFileSize" />
</GetFileSize>
<Message Text="file size of $(MyFileName) is $(MyFileSize)" />
</Target>

关于msbuild - 在 MSBuild 脚本中获取文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12039434/

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