2010-03-06 5 views
33

Ich versuche Scintilla .NET in einem Projekt zu verwenden (Ich möchte einen guten Editor + Syntaxhervorhebung, usw.). Wenn ich die Binärdateien in meinem Projekt referenziere, kann ich die Scintilla-Steuerelemente leider nicht wirklich verwenden. Ich bekomme zwei verschiedene Fehler.Wie wird Scintilla .NET in C# -Projekt verwendet?

  1. Das erste geschieht, wenn SciLexer.dll als Hinweis auf mein Projekt hinzufügen. Ich bekomme eine Nachricht, die besagt: Ein Verweis auf SciLexer.dll konnte nicht hinzugefügt werden. Stellen Sie sicher, dass auf die -Datei zugegriffen werden kann und dass es sich um eine gültige Assembly oder COM-Komponente handelt.

  2. Der zweite Fehler tritt auf, wenn ich versuche, die Steuerelemente von ScintillaNET.dll zu verwenden. Wenn ich versuche, die Komponente in ein Formular zu ziehen, erhalte ich die folgende Meldung: Fehler beim Erstellen der Komponente Scintilla. Die Fehlermeldung folgt: System.ComponentModel.Win32Exception:% 1 ist keine gültige Win32-Anwendung bei ScintillaNet.Scintilla.get_CreateParams()

Jede Hilfe mit einem dieser Probleme sehr geschätzt werden würde. Zur Erinnerung: Visual Studio 2008 wird auf einer 64-Bit-Windows 7-Plattform ausgeführt.

Danke.

+8

Würdest du in Betracht ziehen, Alternativen auszuprobieren? Ich mag den ICSharp.TextEditor, der Teil von SharpDevelop ist, eine kostenlose IDE für die .NET-Entwicklung. Der Editor ist ziemlich mächtig, voll C# -Code, funktioniert wie ein Charme auf 32- und 64-Bit-Systeme - "es funktioniert einfach." Holen Sie es hier http://www.icsharpcode.net/OpenSource/SD/Default.aspx und greifen Sie das ICSharpCode.TextEditor-Teilprojekt aus der großen Lösung heraus –

Antwort

26

Es ist eine Weile her, seit ich Scintilla verwendet habe, aber ich verstehe, dass SciLexer.dll eine vollständig native DLL ist, weshalb Sie keine Referenz von Visual Studio hinzufügen können.

Stattdessen sollten Sie 'arrangieren' für SciLexer.dll zur Laufzeit in das richtige Verzeichnis angezeigt werden, damit es von ScintillaNET.dll geladen werden kann. Der sicherste Weg dazu wäre, SciLexer.dll zu Ihrem Visual Studio-Projekt als einfache Datei (nicht als Referenz) hinzuzufügen und dann die Eigenschaften der Datei zu ändern, damit sie beim Erstellen Ihres Projekts in das Ausgabeverzeichnis kopiert wird.

Vorausgesetzt, dass Sie auf 64-Bit sind, erwarte ich, dass Sie build your app specifically as 32-bit and not AnyCPU benötigen. Wie gesagt, es ist eine Weile her, seit ich das gemacht habe, aber als ich das tat, hatte Scintilla nur 32-Bit-Binärdateien.

+0

Guter Punkt - Kopieren nach Das Ausgabeverzeichnis löst das Problem zur Laufzeit, aber das hilft Visual Studio nicht. Vielleicht war es das, was ich am Ende gemacht habe. :) –

+0

Für Visual Studio-Setup-Projekte müssen Sie auch die "Datei" zur Ausgabe hinzufügen, da die Projektausgabekomponente SciLexer.dll nicht mit nur dem Client-Projekt kopiert, um den Ordner zu kopieren. – Shiv

3

Ich habe rund um die Ausgabe von Dateien

-C:\Windows\SysWOW64 Kopieren habe die Idee von @ Westons Post.

+1

Im Allgemeinen ist dies möglicherweise keine Option für Client-Installationen (beste Sicherheitspraktiken, mehrere Installationen auf demselben Computer - Sie können beispielsweise nicht zwei verschiedene Versionen mit dieser Strategie installieren). – Shiv

-1

i hinzugefügt, sondern die Referenz SciLexer.dll Scintilla.dll - und es funktionierte

+0

Ich glaube, Sie haben ein Tool installiert, das selbst zur Pfadvariablen hinzugefügt wurde und eine SciLexer.dll enthält (z. B. TortoiseSVN). In diesem Fall wird die DLL von diesem Standort ausgewählt und Ihr Tool wird auf einem sauberen installierten Computer nicht funktionieren. Um dies zu überprüfen, öffnen Sie eine Eingabeaufforderung und geben Sie 'where SciLexer.dll' ein. Wenn Sie etwas finden, benennen Sie diese Datei temporär um und starten Sie Ihr Tool erneut. Führen Sie 'ProcessMonitor' aus und überprüfen Sie, woher Ihre SciLexer.dll geladen wird. – Oliver

1

I ScintillaNet (C# Port) verwenden. Es ist einfach zu bedienen, aber es ist ein Speicher Schwein.

https://github.com/jacobslusser/ScintillaNET

+0

Dies ist für alle, die Ihren Beitrag Dan lesen. Wenn Sie Schwierigkeiten beim automatischen Scrollen des ScintillaNET-Editorsteuerelements haben, lesen Sie diesen Beitrag: http://stackoverflow.com/questions/2898722/how-make-autoscroll-in-scintilla/33172398#33172398 –

0

enter image description here

Klicken Sie auf RUN und wählen MyComputer Rechtsklick auf MyComputer Zum Eigenschaften dann Klicken Sie auf Erweiterte Systemeinstellungen.

Wählen Sie danach Erweitert und klicken Sie auf Umgebungsvariablen.

Hier können wir den Wert und Pfad hinzufügen.

Wert: was auch immer Sie mögen "ZB: Scintilla

Wert Pfad: in dem die heruntergeladene dll gehalten." Beispiel: D: \ Prathap \ DLL \

Download-Pfad: https://scintillanet.codeplex.com/releases

Wählen Sie die Downloads von der rechten Seite auf dem Bildschirm.

Dann in der Anwendung fügen Sie die Scintill Dll als Referenz und andere 2 DLL als vorhandene Dateien.

Rechts Projekt ADD klicken Sie - Addexisting Dateien - dann die Dateien aus lokalen System wählen und stellen Sie sicher, dass Sie die 2-Dateien „auf Ausgabeverzeichnis kopieren halten = Immer kopieren

Dann die Anwendung ausführen, es wird.

Verwandte Themen