You can use ArcObjects C# geoprocessing tools in ArcDesktop but you cannot publish them to ArcServer starting in 10.1. There is a hack to get passed this using a python script wrapper with the subprocess module. This will redirect stdout from your c# executable so you can still display some messages using Console.WriteLine()
p=subprocess.Popen([
'c:\path\to\your.exe',
'-argument1',
'-argument2',
'AA',
'/auto'
],
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
while True:
line = p.stdout.readline()
message = line.rstrip()
if !message:
arcpy.AddMessage("[INFO] Tool complete.")
p.stdout.close()
break
else:
arcpy.AddMessage(message)