Skip to content

Instantly share code, notes, and snippets.

@caloggins
Last active August 29, 2015 14:09
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="default" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)'=='' ">Release</Configuration>
<ProjName Condition=" '$(ProjName)'=='' ">$(MSBuildProjectName)</ProjName>
<OutDir Condition=" '$(OutDir)'=='' ">$(MSBuildThisFileDirectory)bin\</OutDir>
<PackDir Condition=" '$(PackDir)'=='' ">$(MSBuildThisFileDirectory)pkg\</PackDir>
<SourceHome Condition=" '$(SourceHome)'=='' ">$(MSBuildThisFileDirectory)src\</SourceHome>
<ToolsHome Condition=" '$(ToolsHome)'=='' ">c:\tools\</ToolsHome>
<PackageVersion>0</PackageVersion>
<TPath>C:\Program Files\MSBuild\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks</TPath>
</PropertyGroup>
<Import Project='$(TPath)' />
<Import Project='$(ToolsHome)MsBuildTasks\RegexTransformTask.tasks' />
<UsingTask TaskName="NUnitTeamCity" AssemblyFile="$(teamcity_dotnet_nunitlauncher_msbuild_task)" />
<Target Name='default' DependsOnTargets='UpdateAssemblyVersion; ReadAssemblyVersion; Clean; RestorePackages; Build; RunTests; Package; Publish' />
<ItemGroup>
<Solution Include="$(SourceHome)*.sln">
<AdditionalProperties>Configuration=$(Configuration)</AdditionalProperties>
</Solution>
</ItemGroup>
<ItemGroup>
<RegexTransform Include="$(SourceHome)Version.cs">
<Find>(\[assembly: AssemblyVersion\(")([^/n]*)\.([^/n]*)\.([^/n]*)\.([^/n]*)("\)\])</Find>
<ReplaceWith>$1$2.$3.$4.$(build_number)$6</ReplaceWith>
</RegexTransform>
</ItemGroup>
<Target Name="UpdateAssemblyVersion">
<RegexTransform Items="@(RegexTransform)" />
</Target>
<Target Name="ReadAssemblyVersion">
<ReadLinesFromFile File="$(SourceHome)Version.cs">
<Output TaskParameter="Lines" ItemName="ItemsFromFile"/>
</ReadLinesFromFile>
<PropertyGroup>
<Pattern>\[assembly: AssemblyVersion\("([^/n]*)\.([^/n]*)\.([^/n]*)\.([^/n]*)"\)\]</Pattern>
<In>@(ItemsFromFile)</In>
<MatchedExpression>$([System.Text.RegularExpressions.Regex]::Match($(In), $(Pattern)))</MatchedExpression>
<MatchedExpressionCleanup>$(MatchedExpression.Remove(0, 28))</MatchedExpressionCleanup>
<Subtract>$([MSBuild]::Subtract($(MatchedExpressionCleanup.Length),3))</Subtract>
<PackageVersion>$(MatchedExpressionCleanup.Substring(0, $(Subtract)))</PackageVersion>
</PropertyGroup>
</Target>
<Target Name='Clean'>
<MSBuild Targets='Clean' Projects='@(Solution)' />
</Target>
<Target Name='RestorePackages'>
<Exec Command='"$(ToolsHome)NuGet\NuGet.exe" restore "%(Solution.Identity)" -source "OPTIONAL_NUGET_SERVER_SOURCE"' />
</Target>
<Target Name='Build'>
<MSBuild Targets='Build' Projects='@(Solution)' />
</Target>
<Target Name='RunTests'>
<ItemGroup>
<TestAssemblies Include="$(SourceHome)\\**\bin\\**\*Tests.dll"/>
<TestAssemblies Include="$(SourceHome)\\**\bin\\**\*tests.dll"/>
</ItemGroup>
<NUnitTeamCity Assemblies='@(TestAssemblies)' NUnitVersion='NUnit-2.6.3' ExcludeCategory='Database' />
</Target>
<Target Name='Package'>
<ItemGroup>
<MainBinaries Include='$(SourceHome)SampleProject.Host/bin/$(Configuration)/*.*' />
</ItemGroup>
<MakeDir Directories='$(OutDir)' />
<Folder TaskAction='RemoveContent' Path='$(OutDir)' />
<Copy SourceFiles='@(MainBinaries)' DestinationFolder='$(OutDir)' />
<MakeDir Directories='$(PackDir)' />
<Folder TaskAction='RemoveContent' Path='$(PackDir)' />
<Exec Command='"$(ToolsHome)Octopus\Octo.exe" pack --id="SampleProject.Library" --version="$(PackageVersion)" --basePath="$(OutDir) " --outFolder="$(PackDir) "' />
</Target>
<Target Name='Publish'>
<Exec Command='"$(ToolsHome)NuGet\NuGet.exe" push "$(PackDir)*.nupkg" YOUR_API_HERE -s "YOUR_NUGET_SERVER_ADDY"' />
</Target>
</Project>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment