У компілятора в Visual Studio є більше можливостей, ніж у компілятора в Unity, це означає, що деякий код (особливо новіші функції c #) дасть помилку в Unity, але не у Visual Studio.
Однак ви можете змінити цільову рамку, щоб вона відповідала тій, яка найближча до того, що Unity використовує у вашому редакторі. Я робив це в Xamarin, коли розробляв бібліотеки для Unity, але, схоже, це можливо і в Visual Studio.
У Visual Studio, у властивостях проекту DLL, встановіть властивість Framework Target на версію рамки Unity, яку ви використовуєте. Це бібліотека базових класів Unity, яка відповідає сумісності API, на яку спрямовано ваш проект, наприклад, бібліотеки повної, мікро чи веб-бібліотеки Unity. Це не дозволяє вашій DLL викликати рамкові методи, які існують в інших структурах або рівні сумісності, але які можуть не існувати у використаній вами версії Unity Framework.
https://msdn.microsoft.com/en-us/library/dn940020.aspx
unity .net profile upgrade
в Google