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 |
| 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 menuthe last two lines should look like this: items.MenuItems.AddRange(group.GetItems()); |
| 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