Find attribute on class property
I think that Heslacher is right and you don't strictly need this class, but as you've written it I'd like to point out a couple of things:


Many people, myself included, don't like to use regions. They just add noise - especially on such a small class
SetAttributeIfExists is one step too far IMO. The method name isn't accurate either, you're setting the value if it exists or not.
The exception message is really odd if you specify a property without the attribute:


[TestMethod]
public void AttributeFound_WhenCalledAfterCheckAttributeAndPropertyDoesntHaveAtrribute_ReturnsNull()
{
    // ARRANGE
    Type testType = typeof(TestObject);
    PropertyInfo property = testType.GetProperty("Name1");

    // ACT
    NameAttribute actual = new PropertyNameAttributeFinder(property)
        .CheckForAttribute()
        .AttributeFound;

    // ASSERT
    Assert.IsNull(actual);
}


I would get an exception saying this:


  No attribute type was found so cannot be returned. Hint: Use HasFoundAttribute first.


That's not a good hint - I've already called HasFoundAttribute. The message could also be more specific as you didn't find a NameAttribute not any old attribute type. The point is you've extended 1 line of code to an entire class for no benefit.