2010-03-06 24 views
33

Estoy intentando usar Scintilla .NET en un proyecto (quiero un buen editor + resaltado de sintaxis, etc.). Desafortunadamente, cuando hago referencia a los binarios en mi proyecto, parece que no puedo usar los controles de Scintilla. Tengo dos errores diferentes.Cómo usar Scintilla .NET en C# Project?

  1. La primera ocurre cuando se añade SciLexer.dll como una referencia a mi proyecto . Aparece un mensaje que dice: No se puede agregar una referencia a SciLexer.dll . Asegúrese de que el archivo esté accesible y que sea un ensamblado válido o un componente COM.

  2. El segundo error se produce cuando intento utilizar los controles de ScintillaNET.dll. Si trato de arrastrar el componente a un formulario, aparece el siguiente mensaje: No se pudo crear el componente Scintilla. El mensaje de error sigue: System.ComponentModel.Win32Exception:% 1 no es una aplicación Win32 válida en ScintillaNet.Scintilla.get_CreateParams()

Cualquier ayuda con cualquiera de estos problemas sería muy apreciada. Para el registro, estoy ejecutando Visual Studio 2008 corriendo en una plataforma de Windows 7 de 64 bits.

Gracias.

+8

Consideraría la opción de eliminar las alternativas? Realmente me gusta el ICSharp.TextEditor, que es parte de SharpDevelop, un IDE gratuito para el desarrollo de .NET. El editor es bastante poderoso, el código C#, funciona como un encanto en 32- y sistemas de 64 bits: "simplemente funciona". Obtenga aquí http://www.icsharpcode.net/OpenSource/SD/Default.aspx y obtenga el subproyecto ICSharpCode.TextEditor desde la gran solución –

Respuesta

26

Ha pasado un tiempo desde que utilicé Scintilla, pero tengo entendido que SciLexer.dll es una DLL completamente nativa, por lo que no puede agregar una referencia desde Visual Studio.

En su lugar, debe 'arreglar' para que SciLexer.dll aparezca en el directorio correcto en tiempo de ejecución para que pueda ser cargado por ScintillaNET.dll. La forma más segura de hacer esto sería agregar SciLexer.dll a su proyecto de Visual Studio como un archivo simple (no como referencia), luego cambie las propiedades en el archivo para copiarlo en el directorio de salida cuando se construya su proyecto.

Dado que tiene 64 bits, espero que necesite build your app specifically as 32-bit and not AnyCPU. Como digo, ha pasado un tiempo desde que hice esto, pero cuando lo hice, Scintilla solo tenía binarios de 32 bits.

+0

Buen punto - copiando a el directorio de salida resuelve el problema en tiempo de ejecución, pero eso no ayuda a Visual Studio. Quizás pegarlo en el camino fue lo que hice al final. :) –

+0

Para los proyectos de instalación de Visual Studio, también deberá agregar el "Archivo" al resultado ya que el componente de salida del proyecto no extraerá SciLexer.dll solo con el proyecto del cliente copiando a la carpeta de salida. – Shiv

3

me dieron la vuelta al problema copiando los archivos a C:\Windows\SysWOW64

tuvo la idea de @ de Weston puesto.

+1

En general, puede que esta no sea una opción para las instalaciones de los clientes (mejores prácticas de seguridad, tener varias instalaciones en la misma máquina; por ejemplo, no se pueden instalar dos versiones diferentes utilizando esta estrategia). – Shiv

-1

añadí referencia a Scintilla.dll en lugar de SciLexer.dll - y funcionó

+0

Creo que tiene alguna herramienta instalada que se agregó a la variable de ruta y contiene un SciLexer.dll (por ejemplo, TortoiseSVN). En ese caso, se seleccionará el dll de esta ubicación y su herramienta no funcionará en una máquina limpia instalada. Para comprobar esto, abra un símbolo del sistema e ingrese 'donde SciLexer.dll'. Si encuentra algo, cambie el nombre de ese archivo temporalmente y vuelva a iniciar su herramienta. Por último, ejecute 'ProcessMonitor' y compruebe desde dónde se cargará su SciLexer.dll. – Oliver

1

utilizo ScintillaNet (C# puerto). Es fácil de usar, pero es un cerdo de memoria.

https://github.com/jacobslusser/ScintillaNET

+0

Esto es para cualquiera que lea tu publicación Dan. Si tienen problemas para desplazar automáticamente el control del editor ScintillaNET, consulte esta publicación: http://stackoverflow.com/questions/2898722/how-make-autoscroll-in-scintilla/33172398#33172398 –

0

enter image description here

Haga clic en RUN y seleccione Mi PC clic derecho en Mi PC y luego ir a las características Haga clic en Configuración avanzada del sistema.

Después de eso, seleccione Avanzado y haga clic en Variables de entorno.

Aquí podemos agregar el valor y la ruta.

Valor: lo que desee "por ejemplo: Scintilla

ruta

Valor: donde el DLL descargado mantiene." EG: D: \ prathap \ DLL \

Descargar Path: https://scintillanet.codeplex.com/releases

Seleccione las descargas de lado derecho de la pantalla.

Luego, en la aplicación, agregue el Scintill Dll como referencia y otros 2 dll como archivos existentes.

Haga clic derecho sobre proyecto ADD - archivos Addexisting - a continuación, seleccione los archivos de sistema local y asegúrese de que usted mantenga los 2 archivos "Guardar en agenda de salida = Copiar siempre

A continuación, ejecute la aplicación que lo hará.

Cuestiones relacionadas