Mono: A Developer's Notebook by Edd Dumbill, Niel M. Bournstein This errata page lists errors outstanding in the most recent printing. If you have technical questions or error reports, you can send them to booktech@oreilly.com. Please specify the printing date of your copy. This page was updated June 1, 2006. Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification Confirmed errors: (9) The screenshot of MonoDevelop shows templates no longer available in the MonoDevelop application. (22) Say "Hello" to the World, 3rd sentence; Choosing from among the Choosing from among the panoply of Mono IDEs and installing your IDE of choice is discussed in Chapter 1. Should be: Choosing from among the panoply of Mono IDEs and installing your IDE of choice is discussed in Chapter 1. {24} Example 2-2; Before the code listing there is "Example 2-2 shows Hello.cs with the fully specified Hello.World namespace [...]" but the code is missing the following: namespace Hello.World { [...] } [32] in the source code of about boxing is a copying operation; In the code comments, it says that j is a copy of of i, yet it looks like j is a copy of o. (35) Last Paragraph; "You instantiate an exception just you would..." should be: "You instantiate an exception just as you would..." {40} First paragraph; The text states that XmlSerializer uses the SerializableAttribute at determine how to serialize an object to XML. This is incorrect. The last sentence of the paragraph should read: Instead, the serialization formatters in System.Runtime.Serialization use reflection to look inside a serializable class and determine how to serialize it. Also, on page 39, the second sentence of the last paragraph should be changed to the following: System.SerializableAttribute is one attribute that shows up quite often; it's used to mark a class which can be serialized, which is necessary for remoting (see "Access Remote Objects" in Chapter 7). (48) 2nd paragraph; "gacutil.exe is the tool responsible for installing assemblies in the GAC.s" should be: "gacutil.exe is the tool responsible for installing assemblies in the GAC." {52} Line 7 of Syscall.cs; Syscall.chmod(file, (FileMode)0x777); should be: Syscall.chmod(file, (FileMode)0x1ff); lower in the page; ...changes it permissions to 0x777 (rwxrwxrwx), full read.... should be: ...changes it permissions to 0x1ff (0777 octal), full read.... {69} Output listening; According to example 3-9, the following is wrong "started on" and "at" it should have been: "on" and "started at" {76} 2nd paragraph; Since writing the book, the name of the NUnit library has changed to 'nunit.framework', not 'NUnit.Framework'. The new compile line should read: $ mcs -target:library -r:nunit.framework MathTest.cs (76) 3rd sidebar; The sidebar should appear inline in the text, between the last para on p 76 and the first para on p 77. (77) sidebar; The sidebar should appear inline in the text, before the first para on the page. (96) Last paragraph; The compiler directive shown as: mcs Main.cs -pkg:gtk-sharp \ -resource:monkey.png,monkey.png should be: mcs Main.cs -pkg:gtk-sharp -resource:monkey.png,monkey.png (remove the \) (135) 2nd paragraph; The second occurrence of the exception System.InvalidCastException should actually read GConf.NoSuchKeyException [153] first code block; args.RetVal = (true|false) causes a crash, it should be args.RetVal = (1|0) (using Mono 1.0.1). Furhtermore, when returning true (1) the link is NOT opened but when returning false (0). AUTHOR: This is a bug found in gecko-sharp 0.5 (and maybe earlier versions) and will be fixed sooner or later to match watch the book says. {160} Code sample following second paragraph; The command "xgettext -o monodn-intl.potMain.cs" is missing a space and should read "xgettext -o monodn-intl.pot Main.cs" (163) Line 1 of Catalog.GetString (String s); IntPtr inptr = Marshal.StringToHGloablAuto (s); should be: IntPtr inptr = Marshal.StringToHGlobalAuto (s); (178) Just before "Where to learn more"; "a XmlNode" should be "an XmlNode"