Skip to content

MSBuild Task to provide SwapFile and clean up folder on publish.

License

Notifications You must be signed in to change notification settings

guitarrapc/SwapTasks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build status NuGet status

SwapTasks

MSBuild Custom Tasks for .NETCore

Install

You can install by NuGet.

PM> Install-Package SwapTasks

Supported Platform

  • .NETStandard 2.0
  • .NET Framework (FullClr)

Current Tasks

SwapFile

Description

Swap file with source and destination.

Example

  <Target Name="SwapTask" BeforeTargets="Build">
    <SwapFile Trigger="$(Trigger)" Fallback="Development" Configuration="$(Configuration)" FileName="app" Extension="config" SourceDir="$(MSBuildThisFileDirectory)" DestinationDir="$(MSBuildThisFileDirectory)" />
  </Target>

Equivalent

    <Target Name="SwapTask">
      <PropertyGroup>
        <CopyConfigMessage>Trigger build parameter missing! Skipping $(SwapFileName).$(SwapExtension) swap task.</CopyConfigMessage>
        <CopyConfigDestination>$([System.IO.Path]::Combine($(SwapDestinationDir), $(SwapFileName).$(SwapExtension)))</CopyConfigDestination>
      </PropertyGroup>
      <PropertyGroup Condition="'$(Trigger)' != '' AND Exists('$(MSBuildThisFileDirectory)$(SwapFileName).$(Trigger).$(SwapExtension)')">
        <!-- For "dotnet build|publish -c Debug /p:Trigger=Xxxx" where xxx.Trigger.config exists -->
        <CopyConfigMessage>Detected Trigger parameter, Copy $(SwapFileName).$(Trigger).$(SwapExtension) to $(SwapFileName).$(SwapExtension)</CopyConfigMessage>
        <CopyConfigSource>$(MSBuildThisFileDirectory)$(SwapFileName).$(Trigger).$(SwapExtension)</CopyConfigSource>
      </PropertyGroup>
      <PropertyGroup Condition="'$(Trigger)' != '' AND !Exists('$(MSBuildThisFileDirectory)$(SwapFileName).$(Trigger).$(SwapExtension)')">
        <!-- For "dotnet build|publish -c Debug /p:Trigger=Xxxx" where xxx.Trigger.config NOT exists -->
        <Fallback>Development</Fallback>
        <CopyConfigMessage>Detected Trigger parameter, $(SwapFileName).$(Trigger).$(SwapExtension) missing! Copy $(SwapFileName).$(Fallback).$(SwapExtension) to $(SwapFileName).$(SwapExtension)</CopyConfigMessage>
        <CopyConfigSource>$(MSBuildThisFileDirectory)$(SwapFileName).$(Fallback).$(SwapExtension)</CopyConfigSource>
      </PropertyGroup>
      <PropertyGroup Condition="'$(Trigger)' == '' AND Exists('$(MSBuildThisFileDirectory)$(SwapFileName).$(Configuration).$(SwapExtension)')">
        <!-- For dotnet build|publish without /p:Trigger=Xxxx -->
        <CopyConfigMessage>Missing Trigger parameter! Copy $(SwapFileName).$(Configuration).$(SwapExtension) to $(SwapFileName).$(SwapExtension)</CopyConfigMessage>
        <CopyConfigSource>$(MSBuildThisFileDirectory)$(SwapFileName).$(Configuration).$(SwapExtension)</CopyConfigSource>
      </PropertyGroup>
      <Message Importance="High" Text="@SwapConfig@ [$(SwapFileName).$(SwapExtension)] $(CopyConfigMessage)" />
      <Message Importance="High" Text="* CopyConfigSource           : $(CopyConfigSource)" />
      <Message Importance="High" Text="* CopyConfigDestination      : $(CopyConfigDestination)" />
      <Copy SourceFiles="$(CopyConfigSource)" DestinationFiles="$(CopyConfigDestination)" />
    </Target>

CleanPublishArtifact

clean publish directory for dotnet publish.

Example

  <Target Name="CleanPublish" AfterTargets="Build">
    <CleanPublishArtifact MSBuildThisFileDirectory="$(MSBuildThisFileDirectory)" PublishDir="$(PublishDir)"/>
  </Target>

Equivalent

    <!-- Clean PublishDir task -->
    <Target Name="CleanPublishArtifact">
      <PropertyGroup>
        <CleanMessage>Clean up publish path before new publish execute.</CleanMessage>
        <CleanPath>$([System.IO.Path]::Combine($(MSBuildThisFileDirectory),$(PublishDir)))</CleanPath>
      </PropertyGroup>
      <Message Importance="High" Text="@CleanPublishArtifact@ $(CleanMessage)" />
      <Message Importance="High" Text="CleanPath : $(CleanPath)" />
      <RemoveDir Directories="$(CleanPath)" />
    </Target>

Related

LICENSE

The MIT License (MIT)