Я нашел решение, которое соответствует моим требованиям
Public Class ProgramManager
Public Programs As New List(Of PartProgram) 'Stores all partprograms
Sub Generate()
Programs.Add(New PartProgram With {
.name = "FU2PIECE.MPF",
.data = System.IO.File.ReadAllText(pathTemplate & "\FU2PIECE.MPF", System.Text.Encoding.UTF8) _
.Replace("$DATE$", DateTime.Now.ToString("dd/MM/yy HH:mm:ss")) _
.Replace("$JOBINFO$", sji.ShortJobInfo) _
.Replace("$VERSION$", My.Application.Info.Version.Major & "." & My.Application.Info.Version.Minor)
})
[...]
End Sub
Sub Send()
For Each prog In Me.Programs
System.IO.File.WriteAllText(root & "\" & prog.name, prog.data)
Next
End Sub