Domanda

Ho questo nel mio codice:

Assembly assembly = Assembly.LoadFile(dllFile);
//dllFile has the correct value of a path of a .dll file
foreach (Type type in assembly.GetTypes()) {...}

Quando il debug il mio programma, tutto funziona bene. Quando creo l'exe per il mio programma, il codice viene a assembly.GetTypes () e si ferma l'esecuzione. Che cosa potrebbe causare assembly.GetTypes () per il lavoro in modo diverso quando sto debug da quando sto usando l'exe?

È stato utile?

Soluzione

Date un'occhiata a questo link:

http: //social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/3bdaf65c-520c-4a1a-a825-fc2ca2957bf3/

Non si dovrebbe mai usare Assembly.LoadFile (). Usa LoadFrom () se si sa dove il gruppo in cui si trova, uso Load () per far figura NET dove il complesso si trova. Utilizzando Load () dovrebbe essere la vostra preferenza, ma può richiedere un file .config per aiuto .NET trovare il montaggio

@HansPassant

Altri suggerimenti

Quando si crea un file exe, è necessario assicurarsi che le assemblee sono nella cartella corretta e anche che il file exe ha accesso alla cartella.

E 'possibile iscriversi a tale evento e fare un semplice Assembly.LoadFrom da una posizione nota per te o anche fare un po' di carico di fantasia del proprio sulla base di qualche sistema si ingegnere. Ci sono anche TypeResolve e ResourceResolve eventi nel AppDomain che consentono di gestire quegli aspetti di risolvere le varie dipendenze di un AppDomain. Per i dettagli vedere questo Microsoft thread del forum .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top