Конфигурация MS Build для копирования дополнительных файлов при развертывании консольного приложения - PullRequest
0 голосов
/ 28 января 2019

У меня есть консольное приложение .net, которое я развертываю на сервере в среде CI Team City.Процесс сборки настраивается с помощью MSBuild, а приложение развертывается с использованием MSDeploy.

Само приложение развертывается нормально, но теперь я хочу развернуть коллекцию шаблонов (файлов) в том же целевом каталоге.У меня есть приложение WebApi, которое успешно развертывает тот же компонент вместе с шаблонами, используя MSBuild WebApplication.targets, фиксируя цель CopyAllFilesToSingleFolderForMsdeploy согласно этой записи .Тем не менее, я не могу заставить этот подход работать для консольного приложения.

Я также попробовал прямую копию файла в AfterBuild target.

Соответствующий раздел .csproj файл проекта выглядит так:

<Target Name="AfterBuild" Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <PropertyGroup>
        <TemplatePath>$([System.IO.Path]::Combine($([System.IO.Path]::GetDirectoryName($(MSBuildProjectDirectory))), `MyApp.MyComponent\Messages\Views`))</TemplatePath>
    </PropertyGroup>
    <ItemGroup>
        <Templates Include="$(TemplatePath)\**\*.cshtml" />
    </ItemGroup>
    <Message Text="Template Path = $(TemplatePath)" Importance="high" />
    <Copy SourceFiles="@(Templates)" DestinationFolder="$(OutputPath)\Templates\%(Templates.RecursiveDir)" />
</Target>

Я делаю это неправильно?Это кажется достаточно простым делом, но я не могу найти способ заставить его работать.

1 Ответ

0 голосов
/ 30 января 2019

В итоге это сработало:

<PropertyGroup>
    <GetCopyToOutputDirectoryItemsDependsOn>
        $(GetCopyToOutputDirectoryItemsDependsOn);
        CustomCollectFiles
    </GetCopyToOutputDirectoryItemsDependsOn>       
</PropertyGroup>
<Target Name="CustomCollectFiles">
    <PropertyGroup>
        <TemplatePath>$([System.IO.Path]::Combine($([System.IO.Path]::GetDirectoryName($(MSBuildProjectDirectory))), `MyApp.MyComponent\Messages\Views`))</TemplatePath>
    </PropertyGroup>
    <Message Text="Template Path = $(TemplatePath)" Importance="high" />
    <ItemGroup>
        <CustomFilesToInclude Include="$(TemplatePath)\**\*.cshtml" />
    </ItemGroup>
    <Message Text="CustomCollectFiles = @(CustomFilesToInclude)" Importance="high" />
    <Copy SourceFiles="@(CustomFilesToInclude)" DestinationFolder="$(OutputPath)\Templates\%(CustomFilesToInclude.RecursiveDir)" />
</Target>
...