When comparing AppVeyor vs TeamCity, the Slant community recommends TeamCity for most people. In the question“What are the best continuous integration tools?” TeamCity is ranked 1st while AppVeyor is ranked 4th. The most important reason people chose TeamCity is:
TeamCity has different installation packages for different operating systems. All the user needs to do is download the correct one and run it.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Free for open-source projects
AppVeyor is free for public GitHub repositories.
Pro Supports Windows build enviroment
AppVeyor has a build environment for Windows available.
Pro Clear, straight-forward user interface
Well I suggest you check it out for yourself, but what I like most is that it's simple yet effective: no bells and whistles, simple black/grey/light-blue/white color scheme, it's immediately clear where you have to go for each specific task, and build settings pages are like that as well. Getting a 'standard' build running literally took me a minute the first time I used it.
Pro Easy access to build VM
AppVeyor allows the user to login to the actual build VM.
Pro The initial setup is easy
There's practically no setup involved prior to working with AppVeyor: simply sign in, add the project, and start a new build.
Pro Easy installation
TeamCity has different installation packages for different operating systems. All the user needs to do is download the correct one and run it.
Pro Cross-platform build support
The fact that it is based on Java does not hinder TeamCity's ability to support different build environments. TeamCity in fact supports a large number of languages and tools for each of those languages (build runners and test frameworks).
Some of the languages/platforms that are supported include: Ruby, .NET, Java.
Pro Brilliant interface
The user interface of TeamCity is clear, well thought out and the dashboard is highly customizable.
Pro Supports build chains
The user can easily compose dependencies between builds by adding snapshot and artifact dependencies, all on the one screen. All output of upstream builds is available to downstream builds. Triggering sets off the entire build chain and supports re-running of the portions of the chain that failed.
Pro Well documented
Pro Extensible
TeamCity offers well defined APIs for extending, as well as a REST interface.
Pro Testing support
TeamCity supports both MSTest and NUnit (which is open source) to run tests.
Pro Best choice for .NET
Seems to be the best choice for .NET applications, but to be honest: if you stray from the default settings you will be in a lot of pain most of the time.
Cons
Con Not free
This is open-source but not free.
Con Configuration is limited
AppVeyor's configuration (which is done from the .yaml file in the root of the project) is unfortunately very limited. The configuration is either tied to a branch or, in other cases, it's global. This limits the developer to a single build process.
However, since you can use arbitrary scripts for building, all those limitations can be overcome. Configuration can also be done from the web UI without a .yaml file.
Con Expensive
TeamCity has a free tier which includes a maximum of 100 build configurations and up to 3 build agents. If you want to add 10 more configurations and 1 more agent, it will cost $299; unless you choose to buy an enterprise license which starts at $1999.
Con Poor quality plugins
At least some of them do not work, probably because they're not updated to more recent TeamCity versions.
Con Inter-branch merges trigger emails to unrelated committers
Whenever an inter-branch merge occurs, TeamCity pulls up the first parent of the merge commit and sends them an e-mail. However, this sort of information would be more useful to the merge author.