public void CopySupportFiles (IProgressMonitor monitor, ConfigurationSelector configuration)
{
ProjectConfiguration config = (ProjectConfiguration) GetConfiguration (configuration);
foreach (FileCopySet.Item item in GetSupportFileList (configuration)) {
FilePath dest = Path.GetFullPath (Path.Combine (config.OutputDirectory, item.Target));
FilePath src = Path.GetFullPath (item.Src);
try {
if (dest == src)
continue;
if (item.CopyOnlyIfNewer && File.Exists (dest) && (File.GetLastWriteTimeUtc (dest) >= File.GetLastWriteTimeUtc (src)))
continue;
// Use Directory.Create so we don't trigger the VersionControl addin and try to
// add the directory to version control.
if (!Directory.Exists (Path.GetDirectoryName (dest)))
Directory.CreateDirectory (Path.GetDirectoryName (dest));
if (File.Exists (src)) {
dest.Delete ();
FileService.CopyFile (src, dest);
// Copied files can't be read-only, so they can be removed when rebuilding the project
FileAttributes atts = File.GetAttributes (dest);
if (atts.HasFlag (FileAttributes.ReadOnly))
File.SetAttributes (dest, atts & ~FileAttributes.ReadOnly);
}
else
monitor.ReportError (GettextCatalog.GetString ("Could not find support file '{0}'.", src), null);
} catch (IOException ex) {
monitor.ReportError (GettextCatalog.GetString ("Error copying support file '{0}'.", dest), ex);
}
}
}