CodeDomProvider: FromSource vs. FromFile

25/02/2008 - 00:30 von Sebastian Schwaiger | Report spam
Grüß euch.

Folgendes Problem:

Ich möchste meine Anwendung gern um Scriptingfunktionalitàten erweitern.

Das funktioniert mit Hilfe des Frameworks auch ganz gut... dachte ich.

new Microsoft.CSharp.CSharpCodeProvider().CompileAssemblyFromSource(...);

Funktioniert wie gewünscht.

Wenn ich jetzt aber den Quelltext aus der XML Node wo er eingebettet ist
in eine eigene Datei auslagere und

new Microsoft.CSharp.CSharpCodeProvider().CompileAssemblyFromFile(...);

aufrufe, ist die erzeugte Assembly leer bzw. enthàlt keine Typen oder
Interfaces auf die ich zugreifen könnte :-/

An den Compileinstellungen etc. habe ich nix veràndert, es kommen auch
keine Fehler als Rückmeldung oder ne Exception oder sosnt was in der
Richtung.


Könnt ihr mir weiterhelfen oder zumindest Denkanstöße geben?

Lg Wasti


Hier mein Code, verkürzt um errorhandling:

CodeDomProvider provider = new Microsoft.CSharp.CSharpCodeProvider();

CompilerParameters parms = new CompilerParameters();
#region Compilerparameter initialisieren
parms.GenerateExecutable = false;
parms.GenerateInMemory = true;
parms.IncludeDebugInformation = true;
parms.WarningLevel = 4;
parms.ReferencedAssemblies.Add("System.dll");

string strLocalRefBasePath =
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
if (!strLocalRefBasePath.EndsWith(@"\"))
strLocalRefBasePath += @"\";

parms.ReferencedAssemblies.Add(strLocalRefBasePath +
"ServerInterfaces.dll");
#endregion

CompilerResults results = null;


string strLocation = ...;

results = provider.CompileAssemblyFromFile(parms, strLocation);

results.Errors.Count = 0
result.CompiledAssembly ist irgendwie leer...
 

Lesen sie die antworten

#1 Marvin Massih
25/02/2008 - 00:56 | Warnen spam
Hallo Sebastian,

Sebastian Schwaiger schrieb:
string strLocalRefBasePath =
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
if (!strLocalRefBasePath.EndsWith(@"\"))
strLocalRefBasePath += @"\";

parms.ReferencedAssemblies.Add(strLocalRefBasePath +
"ServerInterfaces.dll");



Keine Antwort auf Deine Frage, aber schau Dir doch mal Path.Combine() an.

Gruß
Marvin

Ähnliche fragen