I'm far to be an expert in this area, so I need some light on this. I have a clean Windows Server 2012 Standard machine, where I need to install an SVN server, Team Foundation, and an Sql Server 2012. So far so good. The problem is that also I have to install a Domain Controller, situation that is not recommended to do in the same machine, as some people I have asked said. Some recommended to me that install the Domain Controller using a Virtual Machine. Is this a good approach? Wich VM software is the best for this? Virtual Box is an option or I have to use Hyper-V? Thank you very much!
As we do not know the load your various apps place on the system, we cannot provide a definitive answer about running all on one host. We would need more info regarding the RAM, disk configuration and processor(s) as well as number of users to give a better answer.
As far as having a physical DC. You will be placing a lot of services/Apps on that one host and will have a single point of failure for the domain. If the network clients or services are looking for services from the DC and it is offline as the host has failed, VM has carashed or because another VM is using too much of something (Network, disk I/O etc) then you may have issues. We tried this for a production environment and there were many issues. Adding a physical DC solved the issues right away. As noted, use a proper hypervisor and certified hardware for your VMs
If you have to do all of this on a single server, I would install the Hyper-V role on the server and nothing else. Even better would be to download and install Windows Hyper-V Server (which is a separate, distinct product from Windows Server). Then I would create one VM for your domain controller (never install anything on a DC), one for your SQL server, and one for Team Foundation and SVN (or split them out).
However, having only virtualized DC's is a bad idea; you should have at least one physical DC. And since you should never install anything on a DC, this physical DC should be dedicated to only being a DC.
Putting a DC into a VM is okay, but only as long as you've got another DC as a physical server. If you don't, sooner or later you'll run into problems. Only do it if you're aware of all implications, which are manifold (Personally, for me, it's just not worth the effort).
The same applies to putting the VM DC onto the same machine, using the OS as a Host that hosts as all the services you just described. While doable, avoid it (except if you are using the machine just as a VM Host and have the other services running in a VM as well).
If you've got above conditions fulfilled, you may pick any virtualization solution, you won't notice much differences in this scenario.
Edit: Alright, alright, it seems that some clarification is in order since some downvoted:
About the requirement of a physical DC: AD is often a highly critical service, just like DNS. While one can completely virtualize these services, one must do so with great care and avoid the loop holes which lure there. I generally advise against it as a safeguard and additional protection, since a virtualization layer introduces additional possible failure points (and mitigates others) - as with any additional layer introduced. This includes human mistakes, such as making the virtualization layer dependent on services virtualized (seen enough of it). Completely removing virtualization however is the wrong conclusion. Choose a healthy mix. It will help when disaster strikes (and it will, eventually).
About any virtualization solution: Of course, don't use salesman-grade software like vmware player etc. But still, if you have a small environment (and it sounds like you've got one here), it's really not worth arguing over Hyper-V, vmware, KVM et al. Choose one thats easy for you to understand to setup and maintain.