40

我正在尝试在项目中使用 Scintilla .NET(我想要一个好的编辑器 + 语法突出显示等)。不幸的是,当我在项目中引用二进制文件时,我似乎无法真正使用 Scintilla 控件。我得到两个不同的错误。

  1. 第一次发生在添加 SciLexer.dll 作为对我的项目的引用时。我收到一条消息: 无法添加对 SciLexer.dll 的引用。请确保该文件是可访问的,并且它是一个有效的程序集或 COM 组件。

  2. 第二个错误发生在我尝试使用 ScintillaNET.dll 中的控件时。如果我尝试将组件拖到表单中,我会收到以下消息:无法创建组件 Scintilla。错误消息如下: System.ComponentModel.Win32Exception: %1 is not an valid Win32 application at ScintillaNet.Scintilla.get_CreateParams()

对于这些问题中的任何一个的任何帮助将不胜感激。作为记录,我正在运行在 64 位 Windows 7 平台上运行的 Visual Studio 2008。

谢谢。

4

5 回答 5

27

自从我使用 Scintilla 已经有一段时间了,但我的理解是 SciLexer.dll 是一个完全原生的 DLL,这就是为什么你不能从 Visual Studio 添加对它的引用。

相反,您应该“安排”让 SciLexer.dll 在运行时出现在正确的目录中,以便它可以由 ScintillaNET.dll 加载。执行此操作的最安全方法是将 SciLexer.dll 作为纯文件(而不是作为参考)添加到 Visual Studio 项目中,然后在构建项目时更改文件的属性以将其复制到输出目录。

鉴于您使用的是 64 位,我希望您需要将您的应用程序专门构建为 32 位而不是 AnyCPU。正如我所说,我已经有一段时间没有这样做了,但是当我这样做时,Scintilla 只有 32 位二进制文​​件。

于 2010-03-06T20:24:05.523 回答
3

我通过将文件复制到C:\Windows\SysWOW64

从@weston 的帖子中得到这个想法。

于 2013-09-10T01:18:33.207 回答
1

我使用 ScintillaNET(C# 端口)。它很容易使用,但它是一个内存猪。

https://github.com/jacoblusser/ScintillaNET

于 2015-09-16T21:49:05.377 回答
0

在此处输入图像描述

单击 RUN 并选择 MyComputer 右键单击​​ MyComputer 转到 Properties 然后单击 Advanced System Settings 。

之后选择高级并单击环境变量。

在这里我们可以添加值和路径。

价值:你喜欢什么“例如:Scintilla

值路径:下载的 dll 保存的位置。” 例如:D:\prathap\DLL\

下载路径:https ://scintillanet.codeplex.com/releases

从屏幕右侧选择下载。

然后在应用程序中添加 Scintill Dll 作为参考,将其他 2 个 dll 作为现有文件。

右键单击项目添加 - 添加现有文件 - 然后从本地系统中选择文件并确保保留 2 个文件“复制到输出目录 = 始终复制。

然后运行应用程序它将工作。

于 2016-09-28T11:00:38.967 回答
-1

我添加了对 Scintilla.dll 而不是 SciLexer.dll 的引用 - 它有效

于 2014-01-10T15:26:00.013 回答