Je ne sais pas trop où aller avec cela. L'objectif global est de pouvoir prendre un script utilisateur et de l'exécuter dans un environnement .NET. J'ai la plupart du code écrit et les choses fonctionnent à condition que je n'essaie pas de charger mes propres assemblys. Toutefois, pour permettre aux utilisateurs d'accéder en toute sécurité aux parties internes du système, une DLL proxy a été créée. C'est là que le problème semble être.Chargement des assemblages personnalisés avec CompileAssemblyFromSource
Maintenant, cette DLL proxy a une chose, une interface.
CompilerParameters options = new CompilerParameters();
options.GenerateExecutable = false;
options.GenerateInMemory = true;
options.ReferencedAssemblies.Add("System.dll");
options.ReferencedAssemblies.Add("ScriptProxy.dll");
Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider();
CompilerResults result = provider.CompileAssemblyFromSource(options, script);
// This line here throws the error:
return result.CompiledAssembly;
Exécution du code ci-dessus, il jette l'erreur suivante:
System.IO.FileNotFoundException : Could not load file or assembly 'file:///C:\Users...\AppData\Local\Temp\scts5w5o.dll' or one of its dependencies. The system cannot find the file specified.
Bien sûr, ma première pensée est, "... et ce qui est scts5w5o.dll?"
Est-ce que le ScriptProxy.dll
ne se charge pas correctement, ou est le ScriptProxy.dll lui-même essayant de charger des dépendances, qui sont dans un fichier temporaire quelque part? Ou est-ce quelque chose de complètement différent?
Je devrais mentionner, j'exécute ce code du coureur de test de NUnit. Je ne suis pas sûr que cela fasse une différence.
Cela aurait du sens. Je vais essayer ça maintenant. –
Je vais marquer cela comme la réponse parce que même si cela n'a pas résolu le problème, cela m'a aidé à obtenir le vrai message d'erreur qui est presque aussi utile! –
Alors, comment résolvez-vous le problème réel !! – Moumit