El compilador en Visual Studio tiene más funciones que el compilador en Unity, lo que significa que algunos códigos (especialmente las funciones más recientes de C #) generarán un error en Unity, pero no en Visual Studio.
Sin embargo, puede cambiar su marco de destino para que coincida con el más cercano a lo que utiliza Unity en su editor. Lo hice en Xamarin al desarrollar bibliotecas para Unity, pero parece que también es posible en Visual Studio.
En Visual Studio, en las propiedades del proyecto DLL, establezca la propiedad del marco de destino en la versión del marco de Unity que está utilizando. Esta es la biblioteca de clase base de Unity que coincide con la compatibilidad de API a la que apunta su proyecto, como las bibliotecas de clase base completa, micro o web de Unity. Esto evita que su DLL invoque métodos de marco que existen en otros marcos o niveles de compatibilidad, pero que podrían no existir en la versión de marco de Unity que está utilizando.
https://msdn.microsoft.com/en-us/library/dn940020.aspx
unity .net profile upgrade
en Google