Řešení problému: “FileNotFoundException” S mou funkci přijímače.

Pracoval jsem na funkci minulý týden, který by přidat některé přijímače události k určitému seznamu instance. (Jsem blogged trochu o tento seznam přijímač).

Pomocí příkazového řádku, Mohl nainstalovat funkci se k žádné chybě. (Ale viz níže pro skryté chyby). Když jsem se snažil zavést funkci na webu, MOSS stěžovali na "FileNotFoundException" Chyba. Tato položka blogu popisuje, jak jsem to vyřešil.

To je chyba, že MOSS mi ukázal ve webovém prohlížeči:

Funkce ' b2cb42e3-4f0a-4380m 1ef9cd526f20’ nelze nainstalovat, protože načtení sestavení příjemce události "xyzzyFeatureReceiver_0" se nezdařilo.: System.IO.FileNotFoundException: Nelze načíst soubor nebo sestavení ' xyzzyFeatureReceiver_0’ nebo některý z jeho závislostí. Systém nemůže najít zadaný soubor.
Název souboru: ' xyzzyFeatureReceiver_0’
na System.Reflection.Assembly.nLoad(AssemblyName název_souboru, Řetězec codeBase, Důkaz assemblySecurity, Sestavení locationHint, StackCrawlMark& stackMark, Logické throwOnFileNotFound, Boolean forIntrospection)
na System.Reflection.Assembly.InternalLoad(Odkaz assemblyRef AssemblyName, Důkaz assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
na System.Reflection.Assembly.InternalLoad(AssemblyStringje řetězec, Důkaz assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
na System.Reflection.Assembly.Load(AssemblyStringje řetězec)
na Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Montáž vázání protokolování zapnuto vypnuto.
Chcete-li povolit sestavení vazby selhání protokolování, Nastavte hodnotu registru [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) do 1.
Poznámka:: Existuje nějaké penalizace spojené s shromáždění vazba selhání protokolování.
Chcete-li tuto funkci vypnout, odstranit hodnotu registru [HKLMSoftwareMicrosoftFusion!EnableLog].

Poradce při potížích se službou Windows SharePoint Services.

Já vím, jak se záměrně způsobit tuto chybu: neprovádějte instalaci sestavení v GAC. Ale, bylo to v GAC. Normálně instalovat sestavení do GAC jejich přetažením do c:\windowsassembly složku v Průzkumníku windows. Nikdy jsem se necítil 100% pohodlné, dělají to, protože jsem si vždycky myslel, že gacutil existoval důvod … tak jsem to zkusil. Nic se tím nezměnilo.

Jsem prohledal Internet a našel tento post: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

Plakát se stalo používat stejný kořen kousek kódu (z knihy uvnitř WSS z tohoto seznamu) tak to bylo znamením naděje. Avšak, návrh zdobení shromáždění s [montáž: ] směrnice nedávalo smysl ke mně. Já zkusil jsem to a měl jsem pravdu. Nic se tím nezměnilo.

Pak jsem si všiml, že moje definice třídy nebyla veřejné. Udělal jsem to veřejnosti a že nic neměnilo.

Další, Šel jsem na potíže povolení "shromáždění vazba selhání protokolu" (po užitečné a přesné instrukce) a to je, kde to začalo být zajímavé. Tento protokol mi ukazuje, že modul runtime hledá všude na tomto serveru pro mé shromáždění. Dokonce se zdá být hledat v mé lékárničce. Ale … to nebude hledat to v GAC.

Dal jsem na zimní bundu a jít hledat internety znovu a zjistit, že má někdo tento problém příliš. Dlouhé diskuse v tomto zveřejnění peters mimo do nicoty a nemůžu najít řešení.

Přesunout své shromáždění do jednoho z míst, které protokolu tvrdí, je hledání a trochu více pokročit. Jsem odměněn novou chybu v prohlížeči, když se pokusím o aktivaci funkce:

Nepodařilo se vytvořit objekt funkce přijímače ze sestavení "xyzzyFeatureReceiver_0", Typ "Conchango.xyzzyFeatureReceiver" pro funkci b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Hodnota nemůže být null.
Název parametru: Typ
v System.Activator.CreateInstance(Typ, Booleovský nonPublic)
v System.Activator.CreateInstance(Typ)
na Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Poradce při potížích se službou Windows SharePoint Services.

Čas na jednu poslední výlet do internety!

Tentokrát jsem zjistit, natolik předvídatelně, MOSS vydává tuto chybu, protože sestavení není v GAC.

Chci si něco pozitivního z toho a snažte se cítit trochu hrdý, že jsem vytvořil Uprchlík sestavení jazyka MSIL, ale to nefunguje. Já jsem prostě naštvaný. Našel jsem mumlal "slepice nebo vejce" pod mým dechem.

Nakonec se rozhodli punt. Jsem vytvořit zcela nový projekt a kopírovat/vložit kód z incredible-cloaked-from-the-GAC-assembly projektu-pracující nad tento nový projekt. (Dívám se na sestavení vlajka s názvem něco jako "Skrýt od vazby, je-li nainstalován v GAC sestavení" ale nemůžu najít).

Funkci nainstalovat a aktivovat a … to funguje! Tak, po tom všem, Musel jsem v podstatě ' znovuzrození’ Můj projekt. To je další důvod, proč nenávidím počítače.

Zjistil jsem něco užitečného z toho. Už byla instalace funkcí pomocí příkazového řádku stsadm celý den a používali "-síla" možnost ze zvyku. Z nějakého důvodu, Nechtěl jsem použít možnost - force když jsem nainstaloval nový projekt. Tentokrát, Vlastně ano, skutečně zapomněl zkopírovat tento nový projekt sestavení v GAC. Jako výsledek, Dostal jsem ten FielNotFoundException"" Chyba. Tentokrát, Mám to od stsadm, Ne, když jsem se snažil aktivovat funkci přes webový prohlížeč. Tak, -síla skutečně hraje dvě role. Umožňuje znovu nainstalovat existující funkce. To také umožňuje nainstalovat buggy funkci, která nemůže fungovat v době běhu potlačením chybu. Asi tolik v nápovědě někde říká, ale nikdy jsem si nevšiml, že.

</Konec>

Doplněk Technorati značky: ,

3 myšlenky na „Řešení problému: “FileNotFoundException” S mou funkci přijímače.

  1. Francisco

    Rovněž, Měl jsem můj 2 hodin hysterická nintendoSIXTYFOURRRR v a-bad cesta okamžiky, kdy jsem přejmenoval Namespace na příjemce, Chcete-li pomoci při sledování kde vy, nebo kohokoli jiného začalo.

  2. Francisco

    Jádro problému spočívá v nasazeném zp v databázi sharepoint. Četl jsem váš příspěvek a to skutečně problém vyřešit máme obrovské řešení s několika projektů a desítky souborů, tak pohybuje všechno nebyla možnost.

    Bez ohledu na to, kolik vás vaše GAC nebo aktualizovat vaše shromáždění, Co vám dává problém je shromáždění v současné WSP nainstalované na serveru sharepoint.

    Snadno se lze všiml že si snaží pouze odvolat řešení (což je, kde chyba se stane). Vše, co se děje na "Navíjecí čas" třeba považovat za "nasazená wsp"-jen ne samotného projektu.

    Moje řešení bylo:

    – Centrální správy: Zrušit řešení
    – stsadm: deletesolution
    – Visual Studio => Projekt => Balíček
    – stsadm: addsolution-soubor ProjectbinDebugProject.wsp
    – stsadm: deploysolution-jméno project.wsp-bezprostřední - allowgacdeployment-síla
    – Visual Studio => Nasazení

    Také jsem odstranil složky bin a ladění z projektu před spuštěním nasadit znovu, nemusí mít žádný vliv, ale v komentáři.

    To funguje pro oba

    "Funkce … nelze nainstalovat, protože načtení sestavení příjemce události"
    a
    "Nepodařilo se vytvořit objekt feature přijímač ze sestavení"

    Dík!
    Francisco

  3. Tom Clarkson

    Jsem strávil pár hodin se snaží vyřešit tento stejný problém a nalézt lepší řešení, než jednoduše znovu vytvořit projekt.

    To ukázalo, že z nějakého důvodu Visual Studio stanovila cíl sestavení na x 86 x 64 nebo MSIL – bylo sestavení v GAC, jen ne stejné GAC, 64 bit SharePoint díval.

Zanechte odpovědět na Francisco Zrušit odpověď

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *