Sorry for late response, we managed to handle this situation by moving all macros and code into separate transformations and then modified codebehind and ascx to get content from transformations. It's not ideal solution because we did some extra work on widgets to implement it, plus on that we went through ALL already existing widgets and re-save it to update/remove macros from them. This solution is still better then removing and adding all content/widgets again because site is already filled in with content. After resigning, macros are not breaking because, technically they are not in widgets anymore.
I will mark this answer as a correct because it solved my problem, but there is still a lot of room for improvements.