Not sure if this is related, but on our end we had c# razors being used in component templates and we use to publish the same through Tridion. The issue we had was the way .Net framework works, wherein it used to download the razors for compilation and keeps it in a temp folder after compilation so that they can be used for future. The folder location is
"%WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\"
So, anytime we published the CT and observed changes weren't reflecting, we had to empty the folder and then it will work. Please note that you need to clear the files under the .net framework version which you are using which in the above example is v4.0.30319
Qualifier, I will like to attach to this is that only when we changed the razors, it used to happen. Not with updating components which were using this component template.