I have some C# enterprise type work coming up and am looking for advice or links to good information about what a great C# stack looks like. Specifically I'm wondering what good options are for unit testing, mocking, building, database connectivity, and dev libraries and frameworks.<p>I have a lot of experience with enterprise Java, for comparison here is what my answer would be for it:<p>Testing: JUnit, Hamcrest, Mockito
Database: Mybatis, Mybatis Migrations
Build: Maven or Gradle
Libraries/Frameworks: Guava, Guice, HttpClient, Jersey or Stripes, log4j, Apache Commons<p>Thanks!
Hard to answer this question due to the number of possible answers but you can try the following:<p>Testing: xUnit or nUnit. FsCheck, Fuchu and FSpec, if you want to try a more functional approach. SpecsFor, BDDfy, Fixie, Machine.Specifications for BDD and other approaches.<p>Mocking: NSubstitute or FakeItEasy<p>Database: Simple.Data, PetaPoco, Massive for Micro ORM's. Entity Framework and nHibernate for full featured ORM's.<p>Build: There isn't a Maven/Gradle comparison but you can use NuGet, MSBuild, Fake, pvc build, etc.<p>Logging: ELMAH, NLog, Glimpse, Serilog<p>If you need other suggestions, let me know.
Oh boy, coming back to C# after a couple of years was a total shock for me. Here are some things that come to mind:<p>Dependency Injection:
NInject<p>ORM:
Entity Framework, Linq<p>Logging:
log4net<p>Package Management:
NuGet<p>Interface between web applications and web servers:
OWIN<p>Ideas, Books:
POCO, Applied Domain Driven Design and Patterns<p>Libraries:
AutoMapper