Why do the following documents talk about different approaches when implementing Equals method?
[MSDN]Guidelines for Overriding Equals() and Operator == (C# Programming Guide)[MSDN]Implementing the Equals Method
The second document (which is more recent) does not explicitly implement the strongly-typed version of Equals (like public bool Equals(MySuperTrooperClass o)).
What’s underlying reason to drop the strongly-typed method from one of the guidelines and which approach should I use in my production code?
There is no benefit to dropping the strongly-typed version. Quite the contrary, as the first page itself mentions
This is doubly true for value types.
I assume that the second page does not concern itself with this at all because only the weakly typed version is defined on
System.Object. The strongly typed version typically goes hand in hand with implementingIEquatable<T>, the documentation for which mentions the interaction betweenEquals(T)andEquals(object).