在不编写自己的代码的情况下,我可以从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>