After adding a custom binding element to configuration as a binding element extension, Visual Studio reports any use of the binding element in app.config as a schema violation. Is something wrong with the binding element?

No, as long as the binding is able to be instantiated when you run the service you know that the binding element extension is working correctly. Visual Studio reports a configuration extension as a schema violation because the resulting configuration file will contain elements that are not a part of the original schema definition for a .config file.

If you’d really like to eliminate the schema violations, then you can modify the schema files that Visual Studio uses to match your installed configuration extensions. Under the Visual Studio installation directory is the path \Xml\Schema\ which contains the reference definition for schemas. The definition for .config is part of the monstrously large DotNetConfig.xsd schema file. There is a version of the schema file for each previous .Net version as well. You can update the schema to customize how validation works in the editor but very few people bother to do this.