Building and testing .NET application in command line

Setup: Windows – .NET 4.5, Linux – Mono 3, Mint 17 (based on Ubuntu 14). I need to build and test .NET application from command line and on CI server.
Sample solution can be downloaded from here Solution is compatible with MonoDevelop 5, Xamarin Studio 5 and Visual Studio 2012,2013,2015.


1. Building in command line

There are two standard command line building tools for .NET: MSBuild on Windows and xbuild on Linux/Mono. xbuild build files are compatible (with some exceptions) with MSBuild files.

We need at least 4 simple steps (targets as they called in MSBuild terminology) to build a .NET solution:

  • Clean
  • Restore NuGet packages
  • Build binaries
  • Run unit tests

Continue reading

TeamCity agent on Windows with Git through SSH

How to make work TeamCity Agent  on Windows with Git through SSH

1. Run TeamCity Agent not from System account

2. This account must have a PuTTY session stored with SSH key

3. Server’s key must be cached by the TeamCity agent acount. Run plink in console and point plink to the target server.

plink -agent -i c:\[path-to-key]\my_teamcity_private_key.ppk

Confirm key caching ‘y’

Free .NET development software alternatives

The standard software stack for a .NET developer is

  • OS – desktop Windows
  • IDE – Visual Studio
  • Database – SQL Server

All these components are quite pricey. But there are free alternatives. And with my recent project I decided to use alternative software for development and production in .NET, all totally free.

  • OS – Linux Mint 17 (based on Debian/Ubuntu)
  • IDE – MonoDevelop
  • Database – MySQL Community Edition

Sample solution can be downloaded from here
Continue reading

Scrum: 4 typical mistakes

Some days ago I have been at Norwegian Development Conference in Oslo city ( There were a couple of very good sessions about Scrum. I talked to people after those sessions, talked to Scrum Masters, developers, product owners about they experiences with Scrum. I figured out some typical mistakes that Scrum teams make. All these mistakes have actually the same root: Scrum practitioners forget about the reasons why we do Scrum.


The reason why Scrum invented in Toyota is to implement some principle of Toyota Production System. Continue reading

How to encrypt data in browser with JavaScript and decrypt on server side with PHP

Client-server encryption-decryption using Advanced Encryption Algorithm (AES) in client and server is complicated because exactly the same algorithm must be implemented twice: once for client side in JavaScript and once for server side in PHP,C# etc.

Continue reading

How to change location of the pear.ini for php 5.4 and 5.5 on Windows

When PEAR installs itself on Windows it places pear.ini file in the system folder c:\Windows by default. Which sometimes needs to be changed after all. And sometimes it is not possible for some reasons (not sure why, probably a bug in PEAR installation scripts) to change this location during the installation. Then we need to change this location when PEAR is already installed and in use.
Continue reading

How to install PEAR on Windows

There was a PEAR installer go-pear.bat that referred to ./PEAR/go-pear.phar in php versions prior to 5.3 on Windows. But since version 5.3 this installer is absent. Strange enough but official PEAR installation guide still refers to the absent go-pear.bat file. But then it writes about update of PEAR installation by requesting a new go-pear.phar and that is what we should actually do at the beginning.
Continue reading