Question: Are there any considerations for immutable types regarding hash codes?

Should I generate it once, in the constructor?

How would you make it clear that the hash code is fixed? Should I? If so, is it better to use a property called HashCode, instead of GetHashCode method? Would there be any drawback to it? (Considering both would work, but the property would be recommend).

Answer: 
Well, you've got to have a GetHashCode() overridden method, as that's how consumers are going to retrieve your hashcode. Most hashcodes are fairly simple arithmetic operations, that will execute quickly. Do you have a reason to believe that caching the results (which has a memory cost) will give you a noticeable performance improvement?

Start simple - generate the hashcode on the fly. If you think you'll see performance improvements caching it, test first.

Regulations require me to refer you to the "premature optimization is the root of all evil" quote at this point.
In general, computing the HashCode should be fast. So caching should not be much of an optimization, and not worth the trouble.

If profiling really shows that GethashCode takes a significant amount of time then maybe you should cache it, as a fix. 

But I wouldn't consider it part of the normal practice.