Один из вариантов:
нам нужен некоторый класс, наследующий Task. Он скопирует файлы.
public class CopyFilesToFolder : Task
{
[Required]
public string FolderPathForSource { get; set; }
[Required]
public string OutputFolder { get; set; }
public override bool Execute()
{
//Do copy here
return true;
}
}
Например, YouProject - это то, что вы хотите развернуть.
Нам нужно отредактировать файл YourProject.csproj: DLL регистра с классом CopyFilesToFolder и добавить цель для MSDeploy
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="CopyFilesToFolder" AssemblyFile="..\..\pathTodll\dllWithCopyFilesToFolderClass.dll">
</UsingTask>
<Target Name="CopyFilesToFolderForPublish">
<CopyFilesToFolder FolderPathForSource="$(ProjectDir)\\$(_PackageTempDir)\\Content\\" OutputFolder="C:\\Deploy\\Content\\">
</CopyFilesToFolder>
</Target>
<!-- ... -->
</Project>
Как вы видите, мы можем передать параметры в класс мы создаем ранее. И последнее, в YourProject.pubxml файле мы сказали MSDeploy, что, когда он Бип вместе все файлы, необходимые для пакета выполнения целевой CopyFilesToFolderForPublish
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- Other properties -->
<OnAfterCopyAllFilesToSingleFolderForPackage>CopyFilesToFolderForPublish;</OnAfterCopyAllFilesToSingleFolderForPackage>
</PropertyGroup>
</Project>