kompilace pomoci ILASM pro CF2
Mam nejaky IL kod, ktery bych potreboval zkompilovat pro CF2 (je to puvodne CF1 kod ziskany pomoci ILDASM). Potreboval bych ho ted zkompilovat do CF2-class library - pomoci ILASM se mi to sice podarilo, ale vysledkem je full-framework2 class library, ktera nelze pouzit z CF2 aplikace. Do referenci SmartDevice projektu tuhle assembly sice pridam, ale VS2005 se tvari, ze v assembly zadne tridy nejsou (object browser nic neukazuje a pokud pouziju nejakou tridu primo v kodu, tak mi krici kompilator). Pokud ale pridam assembly do referenci ve WinForms aplikaci, tak je vsechno ok a tridy muzu bez problemu pouzivat.
Jak tedy donutit ILASM, aby kompiloval kod pro CF a ne full-framework?
Jak tedy donutit ILASM, aby kompiloval kod pro CF a ne full-framework?
Myslim si, ze k tomu ILASM neznasilnite....
Nebylo by pro Vas sxchudne pouzit napriklad Reflector - ziskat kod a znovu ho zkompilovat pod V.2?
http://www.aisto.com/roeder/dotnet/
Nebylo by pro Vas sxchudne pouzit napriklad Reflector - ziskat kod a znovu ho zkompilovat pod V.2?
http://www.aisto.com/roeder/dotnet/
To je taky moznost, ale bude to pro mne radove mnohem slozitejsi a nejsem si jisty, jestli se mi to vubec podari...
Abych byl konkretni - tenhle problem resim jenom kvuli tomu, ze se nekolik trid v CF2 presunulo oproti CF1 do jine assembly a pokud z CF2 aplikace pouziju tuhle CF1 assembly, tak mi tridy, ktere jsou podedene z techto dotcenych trid nejdou pretypovat na sve predky - kompilator zahlasi chybu, ze nemam referencovanou tu puvodni CF1 assembly, ktera v CF2 uz neexistuje. Jde mi hlavne o tridu DbDataAdapter - trida i v CF2 samozrejme existuje ve stejnem namespace, ale problem je, ze se presunula ze System.Data.Common.dll do System.Data.dll a knihovna System.Data.Common.dll uz v CF2 neexistuje.
V IL je tohle jednoduchy problem - opravim reference na CF2 (staci opravit cislo verze a odstranit referenci na System.Data.Common.dll) a opravim vsechny vyskyty "[System.Data.Common]" na "[System.Data]". Bohuzel to ale, jak sam potvrzujete, zrejme nelze zkompilovat pro CF (pro FF bez problemu). Pro CF lze tedy zrejme bohuzel kompilovat pouze z "vyssich" jazyku a ne primo IL :((
Abych byl konkretni - tenhle problem resim jenom kvuli tomu, ze se nekolik trid v CF2 presunulo oproti CF1 do jine assembly a pokud z CF2 aplikace pouziju tuhle CF1 assembly, tak mi tridy, ktere jsou podedene z techto dotcenych trid nejdou pretypovat na sve predky - kompilator zahlasi chybu, ze nemam referencovanou tu puvodni CF1 assembly, ktera v CF2 uz neexistuje. Jde mi hlavne o tridu DbDataAdapter - trida i v CF2 samozrejme existuje ve stejnem namespace, ale problem je, ze se presunula ze System.Data.Common.dll do System.Data.dll a knihovna System.Data.Common.dll uz v CF2 neexistuje.
V IL je tohle jednoduchy problem - opravim reference na CF2 (staci opravit cislo verze a odstranit referenci na System.Data.Common.dll) a opravim vsechny vyskyty "[System.Data.Common]" na "[System.Data]". Bohuzel to ale, jak sam potvrzujete, zrejme nelze zkompilovat pro CF (pro FF bez problemu). Pro CF lze tedy zrejme bohuzel kompilovat pouze z "vyssich" jazyku a ne primo IL :((
no, o to se tu prece prave snazim :)) bohuzel ale jedna zivotne dulezita knihovna neexistuje v CF2 verzi, zdrojaky od ni nemam a jelikoz je to data provider a obsahuje podedene tridy od System.Data.Common, tak nejde bez problemu pouzit CF1 knihovna z CF2 aplikace....