| Autor |
Beitrag |
Ccenter
      
Beiträge: 154
Win7
C#
|
Verfasst: Do 25.03.10 19:09
Moin,
Ich würde gerne ein Programm schreiben, welches den eigenen Sourcecode als string in den Ressourcen gespeichert hat. Je nach Situation bzw. Wunsch des Anwenders würde ich gerne den Code vom Programm selbst ändern lassen und diesen dann neu kompilieren. Ansich kann ich den Code ja per StreamWriter als *.cs abspeichern. allerdings fehlt dann der Kompiler. Gibt es zufällig einen Code dafür um soetwas zu kompilieren?
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Do 25.03.10 21:01
Dein Anwender kann C#  ? Solche Anwender will ich auch haben  .
Ccenter hat folgendes geschrieben : | | allerdings fehlt dann der Kompiler. |
Nein, der ist bei jeder .NET-Installation dabei.
Schau dir mal CodeDOM an, damit musst du den csc erst gar nicht aufrufen: support.microsoft.com/kb/304655
_________________ >λ=
Für diesen Beitrag haben gedankt: Ccenter
|
|
Ccenter 
      
Beiträge: 154
Win7
C#
|
Verfasst: Fr 26.03.10 22:25
Perfekt, funktioniert
Danke^^
|
|
Ccenter 
      
Beiträge: 154
Win7
C#
|
Verfasst: Sa 30.10.10 12:57
Hab mich ebend nochmal schnell rangesetzt und mir ist aufgefallen, dass der Kompiler mit besimmten Usings nicht klar kommt wie z.B. Linq.
Der Grund dafür ist wohl, dass Using nicht reicht. Im Designer muss man bei neuen Dll's ja auch immer noch auf Verweis->Hinzufügen klicken. Meine Frage ist nun, wie gebe ich das im Code an und wo sind denn Linq, System.Windows.Forms etc? Eine Dll kann man per Code ja mit [DllImport("...")] einbinden. Dann muss man aber auch public static extern benutzen. Gibt es keinen Weg die Dll einfach so hinzu zufügen und dann den Code zu benutzen wie im Designer?
Und zweitens: Wie kann ich per Code, Datein in die Ressourcen einbinden?
|
|
Th69
      

Beiträge: 4807
Erhaltene Danke: 1061
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Sa 30.10.10 13:37
Die referenzierten DLLs mußt du direkt bei den
C#-Quelltext 1:
| CompilerParameters.ReferencedAssemblies |
angeben (z.B. per Add/AddRange)
Du mußt deinen Usern also zusätzlich die DLLs zur Auswahl stellen bzw. diese müssen mittels OpenFileDialog eigene referenzieren können.
(Mittels [DLLImport] werden nur native DLLs angesprochen, nicht .NET Assemblies.)
|
|
Ccenter 
      
Beiträge: 154
Win7
C#
|
Verfasst: Sa 30.10.10 18:27
Ok danke, das läuft jetzt soweit alles,
aber wie kann ich nun per Code Datein den Ressourcen hinzufügen?
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 30.10.10 23:57
Ressourcen sind dafür da, dass du Daten in der Exe mitlieferst. Nicht um zur Laufzeit verändert zu werden.
Es gibt die API-Funktion UpdateResource usw., womit man Resourcen ändern kann. Zu empfehlen ist es dennoch nicht.
|
|
Ccenter 
      
Beiträge: 154
Win7
C#
|
Verfasst: So 31.10.10 15:30
Ich habe ja eine Exe die im Stande ist, einen Code zu kompilieren. Wenn ich diesem Code dann ein Bild mitgeben möchte, muss ich das dann bevor die Exe erstellt wird machen oder nachdem sie fertig ist?
Gab es nicht eine Klasse namens RessourceWriter oder so die das kann?
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 31.10.10 15:53
Ach so meinst du das, nun, genau das geht mit dieser API-Funktion.
Ccenter hat folgendes geschrieben : | | Gab es nicht eine Klasse namens RessourceWriter oder so die das kann? |
Ja, gibt es, siehe Doku, die kapselt vermutlich genau diese API-Funktionen:
msdn.microsoft.com/d...cewriter(VS.80).aspx
|
|