Skocz do zawartości
  • 0

Problem z CSharpCodeProvider


Glicz

Pytanie

Hej, mam problem z CSharpCodeProvider.

Chodzi mi o to, że jak wczytuje kod z innego pliku to wyświetla mi, że nie ma takiej funkcji, a chce żeby ta funkcja była pobierania z głównego programu.
Kod z tego drugiego pliku:
 

using System;
public class SkEditorAddon
{
	public void Main()
	{
		CreateSeparator();
		CreateButton("Fajny", Properties.Resources.book_stack_16, click);
	}
}

Funkcje z głównego programu:

public void CreateSeparator()
        {
            ToolStripSeparator separator = new ToolStripSeparator();
            toolStrip1.Items.Add(separator);
        }

public void CreateButton(string Name, System.Drawing.Image ButtonIcon, System.EventHandler ButtonFunction)
        {
            ToolStripButton button = new ToolStripButton();
            button.Text = Name;
            button.Image = ButtonIcon;
            button.Click += ButtonFunction;
            button.DisplayStyle = ToolStripItemDisplayStyle.Image;
            toolStrip1.Items.Add(button);
        }

oraz wczytywanie kodu z innego pliku

            Directory.CreateDirectory("Addons");
            string[] filesA = Directory.GetFiles("Addons");
            foreach (string addons in filesA)  Debug.WriteLine("ADDONS: " + addons);
            CompilerParameters cp = new CompilerParameters();
            cp.GenerateExecutable = true;
            cp.GenerateInMemory = false;
            cp.TreatWarningsAsErrors = false;
            CSharpCodeProvider provider = new CSharpCodeProvider();
            foreach (string addons in filesA)
            {
                CompilerResults cResults = provider.CompileAssemblyFromFile(cp, addons);
                if (cResults.Errors.HasErrors)
                {
                    foreach (CompilerError ce in cResults.Errors)
                        Debug.WriteLine("Errors building :" + ce.ToString());
                }
                else if (cResults.Errors.HasWarnings)
                {
                    foreach (CompilerError ce in cResults.Errors)
                        Debug.WriteLine("Warning building :" + ce.ToString());
                }
                else
                {
                    System.Type type = cResults.CompiledAssembly.GetType("SkEditorAddon");
                }
            }

Proszę o pomoc :( 

Edytowane przez Michix
Odnośnik do komentarza
Udostępnij na innych stronach

8 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
41 minut temu, jhgggg napisał:

Próbowałeś zrobić te funkcje statyczne? (nie znam się na c++, c#)

No cóż... Nadal nic :/ 

Kod pliku dodatku:

using System;
public class SkEditorAddon
{
	static void Main()
	{
		var Class = new SkEditor();
		Class.CreateButton("test");
	}
}

Kod CreateButton()

        static void CreateButton(string Name)
        {
            var Class = new SkEditor();
            ToolStripButton button = new ToolStripButton();
            button.Text = Name;
            button.DisplayStyle = ToolStripItemDisplayStyle.Image;
            Class.toolStrip1.Items.Add(button);
        }

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
10 godzin temu, wiktorm12 napisał:

A jesteś w stanie pokazać na którą linijkę wskazuje błąd? Z tego co widzę to może jeżeli mówi że nie ma danej funkcji to nie masz jej dobrze zaimportowanej?

No właśnie w tym problem, że nawet nie wiem jak to zaimportować. Pierwszy raz pracuje przy tym i nie wiem jak to się robi.

Błędy:

error CS0246: Nie można odnaleźć nazwy typu lub przestrzeni nazw SkEditor (czy nie brakuje dyrektywy using lub odwołania do zestawu?).

czyli linijka 6

var Class = new SkEditor();

 

Edytowane przez Michix
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
1 minutę temu, wiktorm12 napisał:

A podkreśla ci się jako podczas edytowania tekstowego ta klasa? jak tak to spróbuj ctrl +  spacja

nie, ja ten drugi plik piszę w VSCode i jest w osobnym folderze a konkretnie w folderze "Addons", który jest w tym samym miejscu co główny program

Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...