packages/dbup.3.3.5/tools/DbUp.psm1

function Add-DbUpEmbeddedCheck
{
    param($ProjectName)

    if ($ProjectName) 
    {
        $Project = Get-Project -Name $ProjectName

        if (-Not $Project)
        {
            Return
        }

    }
    else
    {
        $Project = Get-Project
    }

    $ProjectName = $Project.Name

    # Need to load MSBuild assembly if it's not loaded yet.
    Add-Type -AssemblyName 'Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

    # Grab the loaded MSBuild project for the project
    $msbuild = [Microsoft.Build.Evaluation.ProjectCollection]::GlobalProjectCollection.GetLoadedProjects($project.FullName) | Select-Object -First 1
 
    Write "Adding target with name DbUpCheck to $ProjectName ..."

    if ($msbuild.Xml.Targets | ? { $_.Name -eq "DbUpCheck" })
    {
        Write "Target with name DbUpCheck already exists in $ProjectName. No action taken."
        Return
    }

    # Add a target to fail the build when our targets are not imported
    $target = $msbuild.Xml.AddTarget("DbUpCheck")
    $target.AfterTargets = "AfterBuild"

    $messageTask = $target.AddTask("Message")
    $messageTask.SetParameter("Text", "@(Content)")
    $messageTask.SetParameter("Importance", "high")
    $messageTask.Condition = "%(Content.Extension) == '.sql'"

    $errorTask = $target.AddTask("Error")
    $errorTask.Condition = "%(Content.Extension) == '.sql'"
    $errorTask.SetParameter("Text", "@(Content) is marked as content. Scripts should be marked as Embedded Resource.")

    $Project.Save()

    Write "Added Target with name DbUp check to $ProjectName."

}