Home About Workshops Articles Writing Talks Books Contact

Errata for "Developing Applications for Visual Studio .NET"

Lots of things change during beta cycles. I have tried to ensure that during the tech editing, and copy editing stages of the book that I have checked to make sure that the technical details are correct. However, mopst of the book was written with Beta 2, and the final editing of the book occurred in November 2001, and so there will be cases when features were slipped into the RTM after the betas I was using. As issues come to light I will post them on this page. If you have an errata then please send it to me.

First Edition, First Print

Page Reported by Description
37, 38, 600 RTG I mention that there is a member access type called privatescope and give some managed C++ code that shows you how to generate code that has this attribute. Since I wrote the chapter, Microsoft have changed the C++ compiler, now local static variables are implemented with a (public) global static field, and so privatescope is not used.
58, 60, 61, 62 RTG This discussion is correct, but note that in the RTM you can use Type::GetCustomAttributes() to get the custom attributes on a type
80 Peter Partch In the code at the bottom of the page I have missed out the word class in front of the class name.
99 Peter Partch The code at the bottom of the page is marked as being C++, it is actually C#.
102 Peter Partch The screen shot in figure 1.13 was taken from beta 2, in the released version of .NET the GAC namespace extension has "Native Image" in the Type column for assemblies that have been installed in the native image cache (ie ngen.exe has been run on them).
108 Peter Partch After the bulleted list I say "...install your DLL files in the same direction as...", the files should be installed in the same directory.
111 RTG When I wrote this the config files used the short name of the assembly. In the RTM, you have to use the display name, in machine.config on your machine you'll find that the assembly name will mention the version, culture and public key token
169 RTG The discussion about Debug is correct for C#. For C++ you must use conditional compilation. This gets very tedious so I use this macro:
#ifdef DEBUG
#define DEBUGMSG Debug::WriteLine
#define DEBUGMSG __noop
174, 175 RTG Again, this discussion is correct for C#, but not for C++
183 RTG Some strange number seems to have creeped in (183183) ignore this
231 RTG The code in the centre of the page has some errors, the first line has a variable name missing, this should be declared as menu
the last two lines should look like this:
299 and onwards RTG When you give the name of an assembly in a config file you have to give its full name. In this example I reference System.Runtime.Remoting, this should be System.Runtime.Remoting, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 for the current release.
305 Sumit Chawla In the Main() method change b.CallMe to c.CallYou. I got a little confused between me and you :-)
345 Ingemar Lundberg In the code at the top of the page I have used writeDelegate (lowercase w) when I should have used WriteDelegate (uppercase W).
399 RTG The CCW no longer implements IObjectSafety
469 Peter J. Holmes Table 5.2, the icons for the const field entry and below are wrong. The typesetter has used the icon for the next entry in the table (so const field has the icon for method, method has the icon for interface and so on).
627, 628 RTG Note that there is a bug in the managed extensions which does not allow types without the custom attribute [StructLayout(LayoutKind::Sequential)] to be a member of a __nogc type. I say custom attribute because if the member has the sequential .NET attribute (look with ILDASM) then the compiler will issue the error. The documentation for C3265 says this will be fixed in a later version.
629 Jeff Bakst I have missed off the line: #include <mscoree.h> from the code at the bottom of this page

First Edition, Second Print

Page Reported by Description
316 Gary Olliffe In the configuration file at the top of the page, the <channel> tag has a type attribute that gives the full name of the class and its assembly. In the assembly full name the public key token portion of the name should be PublicKeyToken (ie no spaces).
581 RTG Figure 7.2: ATL Server has a DLL Cache, not a DDL Cache.

Updated 30 July 2002

(c) 2006 Richard Grimes