Most people would tell you that anything can get cracked, it all depends on the time and skills of the people looking at it
What you can do however, is get rid of the beginners as they will not know how to de-obfuscate your assembly. But remember .Net is intermediate language and can be understood quite easily if they manage to pass this first protection, so IL code can be manipulated then after
And risk of a source thief will always be here in .Net.. until one day they compile in ASM directly
I don't know if .NET Native is functional now, last time I checked, it was just still in development...