This is not possible as you want and for good reason.
You are actually breaking Liskov's Substitution Principle. Liskov's says
objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program
Since your base class has a public set so should your derived class.
Almost the same arguments that I made in Override Interface Method in another Interface can be applied here
Since you can pass in a derived class where ever the base class is required, what happens now if a user calls that set on the property?
Although newing the method might seem like a possible solution, but that is actually wrong since newing hides the base property and does not override it. It will still be accessible since you are not hiding the set part(you are only hiding the getter).
If you made the setter private in the base class the setter would not be visible publicly for either base or derived. This could however be an option if you are using constructor assignment as you are specifying.