[C#] string replacen und programm compilen

07/03/2015 16:32 _-Moritz-_#1
Hallo ich brauche hilfe,

ich habe ein kleines Programm gemacht.
Für das Programm brauche ich ne art anderes Programm was ein paar Strings ersetzt also ich will z.b. "EMAIL" mit "[Only registered and activated users can see links. Click Here To Register...]" ersetzen usw. aus einer textbox.
Dieses Programm muss dann aber die Program.cs in eine .exe umwandeln aber ich weiß nicht wie ich da starten soll.
Geht es am besten mit csc?
Und sollte ich die Program.cs in den resources speichern oder Alles in einem machen?

Bitte helft mir und gebt evtl. beispiele oder Tutorials.
Bin echt neu im Coden.
07/03/2015 18:53 ლʕಠᴥಠʔლ#2
Würde zwar mit Roslyn funktionieren, aber du hast einen völlig falschen Ansatz.
Guck dir mal persistente Speicherung an.

1. Erstelle eine Klasse mit den benötigen Properties
2. Serializiere die Klasse
3. Nimm das Framework bzw. Medium deiner wahl, z.B. ORM und ne Datenbank
07/03/2015 18:57 hazejp#3
Quote:
Originally Posted by _-Moritz-_ View Post
Hallo ich brauche hilfe,

ich habe ein kleines Programm gemacht.
Für das Programm brauche ich ne art anderes Programm was ein paar Strings ersetzt also ich will z.b. "EMAIL" mit "[Only registered and activated users can see links. Click Here To Register...]" ersetzen usw. aus einer textbox.
Dieses Programm muss dann aber die Program.cs in eine .exe umwandeln aber ich weiß nicht wie ich da starten soll.
Geht es am besten mit csc?
Und sollte ich die Program.cs in den resources speichern oder Alles in einem machen?

Bitte helft mir und gebt evtl. beispiele oder Tutorials.
Bin echt neu im Coden.
Würde ich so lösen:

Code:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Globalization;
using System.Linq;
using System.Text.RegularExpressions;

namespace InvokeCompiler
{
    class Program
    {
        static void Main(string[] args)
        {
            // Email etc. ersetzen
            // .....

            if (!Directory.Exists(@"C:\Windows\Microsoft.NET\Framework"))
            {
                Console.WriteLine("Microsoft.NET Framework is not installed on your system.");
                return;
            }
            Regex r = new Regex(@"v(?<majorversion>[1-9])\.[0-9](?:\.[0-9]+)");
            Dictionary<string, int> versions = new Dictionary<string, int>();
            foreach (string subdir in Directory.EnumerateDirectories(
                @"C:\Windows\Microsoft.NET\Framework"))
            {
                Match m = r.Match(subdir);
                if (m.Success)
                {
                    versions.Add(subdir, int.Parse(m.Groups["majorversion"].Value,
                        CultureInfo.InvariantCulture));
                }
            }
            // Neueste Compilerversion benutzen
            string cscPath = Path.Combine(versions.First(x => versions.Values.Max() == x.Value).Key,
                "csc.exe");
            if (!File.Exists(cscPath))
            {
                Console.WriteLine("A C# compiler couldn't be found on your system.");
                return;
            }
            Process ps = new Process();
            // Statt 'MeinProgramm' deine Quelldatei einfügen!
            ps.StartInfo = new ProcessStartInfo(cscPath, "MeinProgramm.cs")
            {
                CreateNoWindow = true,
                UseShellExecute = true
            };
            ps.Start();
            ps.WaitForExit();
            if (ps.ExitCode == 0)
                Console.WriteLine("The compilation completed successfully.");
            else
                Console.WriteLine(@"There was an error compiling your source file.
Make sure your file exists.");
            Console.ReadLine();
        }
    }
}
07/03/2015 19:24 th0rex#4
Anstatt den Compiler selber zu suchen und aufzurufen, würde ich das so machen wie [Only registered and activated users can see links. Click Here To Register...], falls nicht unbedingt 2 unterschiedliche Programme notwendig sind. Verstehe den Sinn hinter dem neu compilen eh nicht ganz. Könntest die Sachen doch als Startparameter oder anders an das Programm übergeben.
07/05/2015 01:44 _-Moritz-_#5
Danke für die Hilfe erstmal. Das mit dem Compile werde ich mal versuchen.

Quote:
Originally Posted by C0untLizzi View Post
Anstatt den Compiler selber zu suchen und aufzurufen, würde ich das so machen wie [Only registered and activated users can see links. Click Here To Register...], falls nicht unbedingt 2 unterschiedliche Programme notwendig sind. Verstehe den Sinn hinter dem neu compilen eh nicht ganz. Könntest die Sachen doch als Startparameter oder anders an das Programm übergeben.
Also die Sache ist die. Ich will es so das man ein Programm öffnet wo man seine Daten eingeben kann. (Email)
Wenn man dann auf finish klickt soll die .exe datei von der .cs Datei gebildet werden die z.B. im resources drinnen ist mit der eingetragenen email.

Aber die frage ist noch, wie ich den String z.B. Email aus dem 1. Programm in der .cs Datei ändere vor dem Compilen?
Bekomme das nicht hin :(
07/05/2015 02:11 Yothri#6
Quote:
Originally Posted by _-Moritz-_ View Post
Danke für die Hilfe erstmal. Das mit dem Compile werde ich mal versuchen.



Also die Sache ist die. Ich will es so das man ein Programm öffnet wo man seine Daten eingeben kann. (Email)
Wenn man dann auf finish klickt soll die .exe datei von der .cs Datei gebildet werden die z.B. im resources drinnen ist mit der eingetragenen email.

Aber die frage ist noch, wie ich den String z.B. Email aus dem 1. Programm in der .cs Datei ändere vor dem Compilen?
Bekomme das nicht hin :(
Naja je nachdem wie die cs datei vorliegt öffnest du sie suchst mit RegEx nach der gewünschten Stelle und compilst dann... Wo is das Problem?
07/05/2015 08:39 _-Moritz-_#7
Verstehe das nicht und finde Online auch kein gutes Beispiel.
Kann mir wer helfen?
07/05/2015 21:37 hazejp#8
Quote:
Originally Posted by _-Moritz-_ View Post
Verstehe das nicht und finde Online auch kein gutes Beispiel.
Kann mir wer helfen?
Guck dir mal meinen Code an, dann siehst du so ungefähr wie Regex funktioniert und kannst dir (evtl. mit Hilfe von [Only registered and activated users can see links. Click Here To Register...]) dein eigenes Pattern zusammenbasteln.
07/14/2015 03:29 Tesio#9
moin moin,

ich hätte zwei möglichkeiten.
Quote:
Für das Programm brauche ich ne art anderes Programm was ein paar Strings ersetzt also ich will z.b. "EMAIL" mit "[Only registered and activated users can see links. Click Here To Register...]" ersetzen usw. aus einer textbox.
Dafür habe ich jetzt einfach mal ein label erstellt, welcher von der textbox bestimmt wird, sobald man den button drückt:

selbes spiel als string:

Quote:
Dieses Programm muss dann aber die Program.cs in eine .exe umwandeln aber ich weiß nicht wie ich da starten soll.
Geht es am besten mit csc?
Und sollte ich die Program.cs in den resources speichern oder Alles in einem machen?
meinst du dass eine datei geändert werden soll w.z.b:
hier jedenfalls ein kleines beispiel wobei eine datei unbenannt, verschoben
Code:
System.IO.File.Move(TB1, pathTB);
TB1 und pathTB waren die zwei strings, welche mit dem .Move verschoben worden sind oder halt als .txt erstellt worden sind.

Oder habe ich die frage falsch verstanden? ^.^
kannst gerne nochmal nachfragen, wenns nicht schon erledigt ist^^