C# Make. Use C# in your build scripts
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
build
src
.gitattributes
.gitignore
README.md

README.md

No longer maintained

##C# Make

Use C# in your build scripts.

Latest version: 1.1.0

##License

Apache license 2.0.

CSake uses CS Script engine to execute scripts

#Getting Started

Get it from Nuget. Bundled with it (in packages/csake1.0.0/tools) you can find 2 quick start files that you can copy (remove the '-sample' suffix from extension) and use.

Here how's a build script looks (this is based on the CSake build script).

	using System;
	using System.IO;
	using CSake;
	using NuGet;

	const string SlnFile = @"../src/csake.sln";

	const string ReleaseDir = @"../src/csake/bin/Release";

	const string CSakeDir = @"../src/csake";

	const string PackageDir = @"temp/package";

	const string TempDir = @"temp";

	static string CurrentDir = Path.GetFullPath("./");

	public static void CleanUp()
	{
		TempDir.CleanupDir();
		SlnFile.MsBuildClean();
	}

	static string Condition="test";

	//task runs if Condition is not 'test'. 
	//Any static field can be used but the field type should be a primitive (bool, string, int etc)
	[SkipIf("Condition","test")]
	[Depends("CleanUp")]
	public static void Build()
	{
		SlnFile.MsBuildRelease();
	}

    

	[Default]
	[Depends("Build")]
	public static void Nuget()
	{
		PackageDir.MkDir();
		var nuspecFile=Path.Combine(CurrentDir,"csake.nuspec");
		UpdateVersion(nuspecFile,"csake.exe");
		BuildNuget("csake",CSakeDir);
	}

	//basePath= relative path for package files source. Usually is the project dir
	static void BuildNuget(string nuspecFile,string basePath)
	{
		if (!nuspecFile.EndsWith(".nuspec"))
		{
			nuspecFile+=".nuspec";
		}
		Path.Combine(TempDir,nuspecFile).CreateNuget(basePath,PackageDir);    
	}

	static void UpdateVersion(string nuspecFile,string assemblyName)
	{
		var nuspec=nuspecFile.AsNuspec();
   
		nuspec.Metadata.Version=GetVersion(assemblyName);
		nuspec.Save(TempDir);    
	}

	static string GetVersion(string asmName)
	{
		return Path.Combine(ReleaseDir,asmName).GetAssemblyVersion().ToSemanticVersion().ToString();
	}

#Rules

  • No namespaces!
  • Any public static function with no arguments is considered to be a task.
  • Task dependencies are given prefixing the task with [Depends("task1","task2")].
  • There can be only one Default task!
  • You either have to specify a task or have a default task.
  • To reference other assemblies use the "#r" directive before the 'using' statements, one directive for each assembly.
   #r "myassembly.dll"
  • By default the following assemblies are referenced
  • System.dll
  • System.Xml.dll
  • NuGet.Core.dll
  • System.ComponentModel.DataAnnotations.dll (required by Nuget)
  • CavemanTools.dll
  • Loading other scripts is not supported at the moment

Check all included Helpers