You've reached the internet home of Chris Sells, who has a long history as a contributing member of the Windows developer community. He enjoys long walks on the beach and various computer technologies.
Thursday, Jun 20, 2002, 3:12 AM in Tools
treecc -- Free Compiler Construction Tool for C#
Here. "The approach that we take with treecc is similar to that used by yacc. A simple rule-based language is devised that is used to describe the intended behaviour declaratively. Embedded code is used to provide the specific implementation details. A translator then converts the input into source code that can be compiled in the usual fashion."
Monday, Jun 10, 2002, 6:11 PM in Tools
Genghis -- 0.2 Release
Thanks to all of the *very* active contributors, Genghis has doubled in size! This update includes:
- an automated nant build
- a framework for nunit tests
- an almost complete .NET implementation of SimplePad
- an imagelist combo box
- a preferences and window position serializer
- an MRU sample
- a custom state treeview class for doing tri-state checkboxes
- an update to ListViewSorter to make it declarative
- an expanded trace class for common tracing operations
- various other bug fixes
There's plenty more to see and do, so check out Genghis if you're building WinForms applications.
Sunday, Jun 9, 2002, 4:45 PM in Tools
ADOGuy's Typed DataSet Generator
"The Typed DataSet that Microsoft generates from Visual Studio.NET (or from the XSD.exe tool), does not support derivation directly. In order to allow us to derive from Typed DataSets, Chris Sells and I created this tool that fixes the couple of issues with inheriting from Typed DataSets."
Saturday, Jun 8, 2002, 12:29 PM in Tools
Brent Rector: The Truth about Code Obfuscators
"An obfuscator only delays the inevitable. With unlimited resources (time and money) and physical access to code, all code can be reverse engineered. This was true for native x86 binaries and it's true for .NET Framework applications. What an obfuscator does is increase the cost of the effort required to reverse engineer obfuscated code. Hopefully, it increases the cost enough to make reverse engineering your code unpractical."
Thursday, Jun 6, 2002, 10:40 AM in Tools
Visual Build Pro
"It's easy to put Visual Build Pro to work doing all that manual labor for you so you can focus on more important things. Visual Build Pro is a powerful but affordable build management solution that will automate the build process without a huge commitment of time, and it works with the tools you're using today."
Tuesday, Jun 4, 2002, 8:43 PM in Tools
Updated XsdClassesGen
Eric Eric Friedman has submitted code to support namespaces and uninstall. The former fills the biggest hole in XsdClassesGen (thanks Eric), but why would anyone need the latter?!? : )
Friday, May 17, 2002, 12:00 AM in Tools
.NET XsdClassesGen
XsdClassesGen is a Custom Tool Add-In to VS.NET 2002 & 2003 to generate type-safe wrapper classes for serializing to and from XML documents. It takes as input an XSD and produces the C# or VB.NET code to do the serialization using the XmlSerializer. This is really just the output of running xsd.exe /classes, but integrated directly into VS.NET.
If you'd like to know more about what a custom tool is and how to build your own, check out CollectionGen.
Also, Atif Aziz used some of my custom tool code and built a generic VS.NET code generator shim that allows you to build a code generator that plugs into VS.NET by implementing a single method.
And, as if that weren't enough, Stephane Tombeur has posted the code to VS2005. Thanks, Stephane!
Monday, May 13, 2002, 7:35 AM in Tools
Modern C++ Design
From Razvan Caciula: I like Chris Sells's books, but also i like romanians too :> I'm preparing for a technical interview and i founded this book very useful.
Friday, May 10, 2002, 4:38 PM in Tools
Genghis -- .01 release
We've released the v0.1 version of Genghis. Enjoy!
Friday, May 10, 2002, 4:36 PM in Tools
Announcing Genghis
Genghis is a set of extensions built on top of .NET and integrated with WinForms to provide application-level services in the same flavor as the Microsoft Foundation Classes. Genghis gets its name as the functional heir to Attila, a similar set of functionality built on top of ATL.
Friday, May 10, 2002, 4:33 PM in Tools
SafeFormatter for .NET
Are you building and deploying .NET applications in a secure environment, e.g. over the intranet or the internet? If so, they you've probably mourned the loss of the binary and SOAP formatters that can automatically serialize a graph of objects that are marked as [Serializable] and that may also implement ISerializable and IDeserializationCallback. Both of these formatters are dependent on reflection, which will not be available in a more restrictive security environment. Likewise, even ISerialization.GetObjectData is verboten if you wanted to do this kind of thing yourself. As far as that goes, [Serializable] and ISerialization should be forbidden in a secure environment, as it allows a client to get and set the private variables of an object, potentially causing harm.
Still, security is the enemy of usability, to paraphrase Keith Brown. So, in the spirit of a balancing the design need for objects that can serialize themselves with the goal of complete disclosure in a secure world, I've built my own "safe" formatter. It only uses facilities of the runtime that work in the most secure environment of the default settings for the internet zone. So that objects can guard themselves against malicious data, I define a new interface called ISafelySerializeable that they need to implement to support this serialization facility. The protocol is exactly the same as ISerializable, so if that interface is already being implemented, the implementation of GetObjectData can be shared between both interfaces.
Currently, the code is in alpha and is riddled with TODO statements, but its functional enough today for actual usage. My SafeFormatter and test harness are available for your feedback. Enjoy.
Friday, Apr 12, 2002, 12:00 AM in Tools
Giving VS.NET That XP Look
USE THIS FILE WITH CARE. It causes problems with image lists for .NET EXEs that don't also use the same manifest file.
Just drop this devenv.exe.manifest file next to devenv.exe in your VS.NET install directory and the next time you start VS.NET under XP, it'll look mostly the same! (well, maybe a little different : )
Wednesday, Apr 10, 2002, 12:00 AM in Tools
.NET CollectionGen
[Note: As of 5/5/03, the functionality of CollectionGen has been sucked into Eric Smith's CodeSmith. I asked Eric to take on these features because CodeSmith does all of what CollectionGen does and more. All new feature requests/bug reports should go his way.]
CollectionGen is a Custom Tool Add-In to VS.NET 2002 & 2003 to generate type-safe collections. As it turns out, I did almost none of the work. Jon Flanders figured out how to add a custom tool. Shawn Van Ness implemented the template for type-safe collections. I just put it together.
CollectionGen is an add-on to generate code for type-safe collections until we have templates in C# (likely) and VB (unlikely). The benefit of a type-safe collection, of course, is that you can use it without having to cast items to and from objects. Also, Shawn has been very careful to implement a collection class that is very efficient for both reference types and value types.
Once you've setup it up and defined your collections in a collection definition file in your project, you'll have type-safe collection classes generated as part of your design-process, as shown here:
Figure 1: collections.xml collection definition file
Figure 2: collections.xml and generated collection.cs implementation file
Figure 3: CollectionGen custom tool add-in associated with the collections.xml file
Figure 4: Generate type-safe collection code
Enjoy!
Also, Atif Aziz used some of my custom tool code and built a generic VS.NET code generator shim that allows you to build a code generator that plugs into VS.NET by implementing a single method.
Saturday, Apr 6, 2002, 12:00 AM in Tools
RegexDesigner.NET
RegexDesigner.NET is a powerful visual tool for helping you construct and test .NET Regular Expressions. When you are happy with your regular expression, RegexDesigner.NET lets you integrate it into your application through native C# or VB.NET code generation and compiled assemblies (usable from any .NET language).
Features:
- Full source
- Interactive matching of .NET regular expressions.
- Syntax highlighted match results, including zero-length matches and hidden characters.
- Tooltips to display matched groups.
- Regular expression matching, replacing and splitting.
- Regular expression projects to save expressions, text to match and all regex options.
- Full code generation for C# and VB.NET for all regex operations.
- Compiled assembly generation.
- Full online help.
Friday, Mar 8, 2002, 12:00 AM in Tools
.NET IM Client Classes
Inspired by my need to know who was calling without hauling my butt off the couch to look at the caller ID on the phone across the room (my father always said that "laziness is the mother of invention"), I built a couple of C# classes for managing an IM connection and an IM session. The test client is a console application that just sends messages and dumps whatever it gets from the IM server to the console, but I think it would serve as the code is the beginnings of a real IM client. It does the MD5 stuff properly and handles being redirected to another IM server, so the hard part of the protocol is already implemented. The sample itself is a handy little program that logs in as an IM user, sends a message to another IM user and logs back off again. Perfect for annoying your office mates. Enjoy.
BTW, Harry Pierson has made a number of updates to this core code to support his full-blown .NET IM client application. Check it out!