webForumDet fria alternativet

ResourceManager, resx och bilder

.NET

4 svar · 678 visningar · startad av spango

Medlem sedan juni 20008 205 inlägg
Frågan#1

Håller på med en C#-applikation i VS2k5 där jag vill läsa in bilder från en resx-fil (eller ja, inte riktigt från resx-filen, men ni förstår vad jag menar). Jag har hur som helst skapat en resx-fil (som heter Resources.resx) i projektet (som heter GUITest, även så namespacet i projektet), och genom den resx-filen har jag skapat/lagt till två PNG-bilder som jag har editerat till min förnöjelse. Efter lite UTFG:ande kom jag fram till att det var ungefär såhär jag ville göra:

ResourceManager res = new ResourceManager("GUITest.Resources", GetType().Assembly); 
ImageBg = (Image)res.GetObject("FancyBtnBg"); // denna rad ger ett exception

(Har även provat med ResourceManager res = new ResourceManager("Resources", GetType().Assembly); men det funkar inte heller.)
Men det verkar som om jag inte får in min resursfil i assemblyn, ty:

Debuggern skrev:

Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "GUITest.Resources.resources" was correctly embedded or linked into assembly "GUITest" at compile time, or that all the satellite assemblies required are loadable and fully signed.

När jag rotar igenom ResourceManager-objektet i debuggern verkar den vara helt tom. Hur ska man göra för att kunna få fram saker ur sin resursfil? Måste man göra nåt speciellt för att få in resursfilen i assemblyt/exen?

Medlem sedan juni 20008 205 inlägg
#2

Kan fylla på lite. När jag försöker kompilera resx:en själv med resgen får jag följande fel:

[b]C:\projektkatalogen>resgen Resources\Resources.resx[/b]
error: Invalid ResX input.
error: Specific exception: FileNotFoundException  Message: Invalid ResX input. 
---> FileNotFoundException: File or assembly name System.Windows.Forms, or one of
 its dependencies, was not found.
2 error(s).

Jag har UTFG:at en del och hittade http://www.dotnet247.com/247reference/msgs/49/249673.aspx och försökte följa tipsen där:

[b]C:\>gacutil /i "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\system.windows.forms.dll"[/b]

Microsoft (R) .NET Global Assembly Cache Utility.  Version 1.1.4322.573
Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

Failure adding assembly to the cache: Unknown Error
Medlem sedan juni 20008 205 inlägg
#3

Doh, gacutil funkade inte eftersom jag använde den för dotnet 1.1 i stället för 2.0. Jaja, nu när jag lagt till winform-dll:en till gac:en... får jag samma fel från resgen.

Medlem sedan juni 20008 205 inlägg
#4

Jaha, så funkar det helt plötsligt. Laddar ResourceManagern med new ResourceManager("<Namespace>.<Katalog>.<Filens namn utan .resx>", GetType().Assembly); och uppenbarligen har månen gått in i en mer gynnsam fas för det funkade inte igår men gör det idag ;)
Tack för hjälpen alla! :p

Medlem sedan nov. 20022 355 inlägg
#5

I vs 2005 kan du använda dig av Resource.[namn på resc-filen].[namn på nyckeln i filen] så får du ut ditt objekt. Då får du med intellisencen etc. Det gäller ifs att hålla reda på att du har en ny version av klassen som skapas vid kompilering av resx-filen. Antar att det är en bugg i vs 2005 som gör att den inte uppdateras.

384 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
124 ms — hämta statistik (db)
127 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)