2010-03-06 7 views
33

Я пытаюсь использовать Scintilla .NET в проекте (хочу хороший редактор + подсветка синтаксиса и т. Д.). К сожалению, когда я ссылаюсь на двоичные файлы в своем проекте, я не могу использовать элементы управления Scintilla. Я получаю две разные ошибки.Как использовать Scintilla .NET в проекте C#?

  1. Первое происходит при добавлении SciLexer.dll в качестве ссылки на мой проекта. Я получаю сообщение, которое гласит: Ссылка на SciLexer.dll не может быть добавлена ​​ . Убедитесь, что файл доступен и что он является действительным модулем сборки или COM.

  2. Вторая ошибка возникает, когда я пытаюсь использовать элементы управления из ScintillaNET.dll. Если я попытаюсь перетащить компонент в форму, я получаю следующее сообщение: Не удалось создать компонент Scintilla. Сообщение об ошибке следующим образом: System.ComponentModel.Win32Exception:% 1 не является приложением Win32 на ScintillaNet.Scintilla.get_CreateParams()

Любая помощь с любой из этих проблем была бы оценена. Для записи я запускаю Visual Studio 2008, работающую на 64-битной платформе Windows 7.

Спасибо.

+8

Можно ли проверить альтернативы? Мне очень нравится ICSharp.TextEditor, который является частью SharpDevelop, свободной разработки IDE для .NET. Редактор довольно мощный, полностью C# -код, работает как шарм на 32- и 64-битные системы - «он просто работает». Получите его здесь http://www.icsharpcode.net/OpenSource/SD/Default.aspx и возьмите подпроект ICSharpCode.TextEditor из большого решения –

ответ

26

Прошло немного времени с тех пор, как я использовал Scintilla, но я понимаю, что SciLexer.dll является полностью родной DLL, поэтому вы не можете добавить ссылку на него из Visual Studio.

Вместо этого вы должны «расположить» файл SciLexer.dll в нужном каталоге во время выполнения, чтобы он мог быть загружен программой ScintillaNET.dll. Самый безопасный способ сделать это - добавить SciLexer.dll в проект Visual Studio в виде простого файла (а не как ссылку), а затем изменить свойства файла, чтобы он был скопирован в выходной каталог при создании вашего проекта.

Учитывая, что вы на 64-битном уровне, я ожидаю, что вам понадобится build your app specifically as 32-bit and not AnyCPU. Как я уже сказал, прошло какое-то время с тех пор, как я это сделал, но когда я это сделал, у Scintilla были только 32-битные двоичные файлы.

+0

Хорошая точка - копирование в выходной каталог решает проблему во время выполнения, но это не помогает Visual Studio. Возможно, в конце концов это было то, что я сделал в конце. :) –

+0

Для проектов установки Visual Studio вам также нужно будет добавить «Файл» к выходу, поскольку компонент вывода проекта не будет вытаскивать SciLexer.dll только с копированием проекта клиента в выходную папку. – Shiv

3

меня вокруг вопроса путем копирования файлов на C:\Windows\SysWOW64

Есть идею от @ Уэстона поста.

+1

Вообще говоря, это не может быть вариантом для установки клиента (лучшие методы безопасности, имеющие несколько установок на одном компьютере - например, вы не можете использовать две разные версии, используя эту стратегию). – Shiv

-1

я добавил ссылку на Scintilla.dll вместо SciLexer.dll - и она работала

+0

Я думаю, что у вас установлен какой-то инструмент, который сам добавлен в переменную пути и содержит файл SciLexer.dll (например, TortoiseSVN). В этом случае dll из этого местоположения будет выбрано, и ваш инструмент не будет работать на чистой установленной машине. Чтобы проверить это, откройте командную строку и введите 'where SciLexer.dll'. Если вы найдете что-то, переименуйте этот файл, и снова запустите инструмент. И последнее, но не менее важно запустить 'ProcessMonitor' и проверить, где будет загружен ваш SciLexer.dll. – Oliver

1

Я использую ScintillaNET (C# порт). Он прост в использовании, но это память.

https://github.com/jacobslusser/ScintillaNET

+0

Это для тех, кто читает ваше сообщение Dan. Если у вас (они) есть проблемы с автоматической прокруткой редактора редактора ScintillaNET, см. Этот пост: http://stackoverflow.com/questions/2898722/how-make-autoscroll-in-scintilla/33172398#33172398 –

0

enter image description here

Нажмите на RUN и выберите MyComputer правой кнопкой мыши на MyComputer Перейти к Свойства затем Нажмите на Дополнительные параметры системы.

После этого выберите «Дополнительно» и щелкните «Переменные среды».

Здесь мы можем добавить значение и путь.

Значение: что бы вы хотели «например: Scintilla

путь

Значение: где скачанная длл сохранена.» EG: D: \ prathap \ DLL \

Скачать Путь: https://scintillanet.codeplex.com/releases

Выберите загрузку с правой стороны на экране.

Затем в приложении добавьте Scintill Dll в качестве ссылочной и другой 2-й DLL в качестве существующих файлов.

правой кнопкой мыши на проект ADD - Addexisting файлов - выберите файлы из локальной системы и убедитесь, что вы держите 2 файла «Копировать в папку Output = Копировать Всегда

Затем запустите приложение, оно будет. работа