Thanks Helge. I'll try it and let you know how I get on. Peter
-----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Helge Lenuweit Sent: 07 February 2006 13:06 To: Bradley, Peter Cc: mono-List (E-mail) Subject: Re: [Mono-list] Config file for dll Hello Peter, I use that same code to read assembly settings and found it best to use the Assembly.Location property. I use the following code with both .NET and mono: string cfgFile = asm.Location + ".config"; const string nodeName = "appSettings"; Note that I also changed the node name from assemblySettings to the standard appSettings. I know this is semantically incorrect as the DLL is not the "app", but it makes interchanging config files a lot easier and editing is less error-prone. Best regards, Helge Bradley, Peter schrieb am 07.02.2006 12:06: > > Hi, > > I've tried to post on this before, but never managed to get below the > size limit. So this is a change of tactic J > > The problem is that I would like to keep the connection string for the > application's db connectivity in a configuration file instead of hard > coding it. However, since I'm making the db connection from a dll > rather than an exe file I can't use a normal App.config file. What I > would like to do is to use the AssemblySettings class that can be > found at: > > http://www.bearcanyon.com/dotnet/#AssemblySettings > > This allows the settings to be accessed like this: > > // AssemblySettings usage: > > // > > // If you know the keys you're after, the following is probably > > // the most convenient: > > // > > // AssemblySettings settings = new AssemblySettings(); > > // string someSetting1 = settings["someKey1"]; > > // string someSetting2 = settings["someKey2"]; > > This works in .NET on Windows, but not in Mono on Linux. When I deploy > the project to my Linux server and try to run the db connectivity > code, I get an error saying that the table cannot be read. I'm certain > this is because the connection string is not being read from the > config file because if I hard code the connection string into the > program instead of calling AssemblySettings, everything works just > fine. In other words, I think the config file is not found under Mono. > > Looking at the AssemblySettings code, I think the problem is here: > > public static IDictionary GetConfig( Assembly asm ) > > { > > // Open and parse configuration file for specified > > // assembly, returning collection to caller for future > > // use outside of this class. > > // > > try > > { > > string cfgFile = asm.CodeBase + ".config"; > > const string nodeName = "assemblySettings"; > > XmlDocument doc = new XmlDocument(); > > doc.Load(new XmlTextReader(cfgFile)); > > XmlNodeList nodes = doc.GetElementsByTagName(nodeName); > > foreach( XmlNode node in nodes ) > > { > > if( node.LocalName == nodeName ) > > { > > DictionarySectionHandler handler = new DictionarySectionHandler(); > > return (IDictionary)handler.Create(null, null, node); > > } > > } > > } > > catch (Exception ex) > > { > > string s = ex.Message; > > } > > return(null); > > } > > In Windows, the variable cfgFile is set to (for example) > MyAssembly.dll.config and then the XmlTextReader object reads the XML > file (the config file) in the folder of the dll's calling assembly, > which would be the folder of the executable assembly that links to the > dll, under normal circumstances (assuming the assembly is not in the > GAC). I don't plan to put the assembly in the GAC. > > Is it possible that Mono is looking in a different place? Is there > some code I need to add to ensure that Mono will look in some specific > place? > > Many thanks > > Peter > > ------------------------------------------------------------------------ > > _______________________________________________ > Mono-list maillist - [email protected] > http://lists.ximian.com/mailman/listinfo/mono-list > _______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list _______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list
