由于描述不充分而更新。
我为“BeforeBuild”目标创建了这个 CodeTaskFactory MSBuild 任务:
<UsingTask
TaskName="WriteIntoFileIfDifferent"
TaskFactory="CodeTaskFactory"
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll" >
<ParameterGroup>
<FileName ParameterType="System.String" Required="True" Output="False"/>
<Text ParameterType="System.String" Required="True" Output="False"/>
</ParameterGroup>
<Task>
<Code Type="Class" Language="cs">
<![CDATA[
...
public class WriteIntoFileIfDifferent : Task
{
...
public override bool Execute ()
{
...
CopyFileIfNeeded (tempFileName, m_fileName);
...
}
private void CopyFileIfNeeded (string i_sourceFileName,
string i_targetFileName)
{
...
CheckFileCopyNeeded (i_sourceFileName, i_targetFileName))
...
}
private static bool CheckFileCopyNeeded (string i_sourceFileName,
string i_targetFileName)
{
...
return !CheckStreamContentsEqual (sourceFileStream, targetFileStream);
...
}
private static bool CheckStreamContentsEqual (FileStream i_sourceFileStream,
FileStream i_targetFileStream)
{
...
}
}
]]>
</Code>
</Task>
</UsingTask>
现在我为“BeforeBuild”目标创建了另一个相同类型的任务,它现在调用这两个任务。这两个任务都包含一个“CopyFileIfNeeded()”方法;它实际上是一个普通的副本。
如何CopyFileIfNeeded()
从两个任务中提取方法并将其放在单独的位置,以便两个任务都可以使用它?
这甚至可能吗?
如果是,我如何在我的任务中调用此方法?
如果有人对完整代码感兴趣,我可以在这里添加。