我正在使用Windows 2008 x64上的MSBuild(Framework版本为v4.0.30319-32位)。想了解MSBuild如何管理内联任务。它会在每次调用任务时编译一次吗?还是只编译一次并重复使用?我运行了带有“/m”参数的MSBuild,并尝试在C#代码中故意引入错误。然后MSBuild指向1个文本文件(位于我的个人资料文件夹中的某个临时文件夹下)。没有生成其他文本文件。但是,如果没有错误,我不知道该如何查找这个文件。
我尝试调查此问题的原因是: 要确定它是否与使用已编译的dll相同程度有效(而不是内联任务)。如果编译只发生一次,则可以接受内联任务代码编译的微小开销(因为我将节省代码和二进制SCM方面的开销)。
我尝试调查此问题的原因是: 要确定它是否与使用已编译的dll相同程度有效(而不是内联任务)。如果编译只发生一次,则可以接受内联任务代码编译的微小开销(因为我将节省代码和二进制SCM方面的开销)。
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="default" ToolsVersion="4.0">
<Target Name="default">
<ItemGroup>
<A Include="1;2;3;4;5;6;7;8;9;10"/>
</ItemGroup>
<MSBuild Projects="$(MSBuildProjectFullPath)"
BuildInParallel="true"
Targets="Echoer"
ToolsVersion="4.0"
StopOnFirstFailure="true"
Properties="Prop=%(A.Identity)"/>
</Target>
<Target Name="Echoer">
<MyTask WhatToEcho="$(Prop)"/>
</Target>
<UsingTask TaskName="MyTask" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<WhatToEcho ParameterType="System.String" Required="True"/>
</ParameterGroup>
<Task>
<Code Language="cs" Type="Fragment">
<![CDATA[
Log.LogMessage("Property received: "+WhatToEcho);
]]>
</Code>
</Task>
</UsingTask>
</Project>