【问题标题】:How to Use Scintilla .NET in C# Project?如何在 C# 项目中使用 Scintilla .NET?
【发布时间】:2011-01-24 12:47:52
【问题描述】:

我正在尝试在项目中使用 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。

谢谢。

【问题讨论】:

  • 你会考虑看看替代品吗?我真的很喜欢作为 SharpDevelop 一部分的 ICSharp.TextEditor,它是一个用于 .NET 开发的免费 IDE。该编辑器非常强大,完全是 C# 代码,在 32 位和 64 位系统上运行起来就像一个魅力——“它就可以工作”。在这里获取它icsharpcode.net/OpenSource/SD/Default.aspx 并从大型解决方案中获取 ICSharpCode.TextEditor 子项目

标签: c# .net visual-studio scintilla


【解决方案1】:

我使用 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 位二进制文​​件。

【讨论】:

  • 好点 - 复制到输出目录可以在运行时解决问题,但这对 Visual Studio 没有帮助。也许坚持下去是我最终所做的。 :)
  • 对于 Visual Studio 设置项目,您还必须将“文件”添加到输出中,因为项目输出组件不会在仅将客户端项目复制到输出文件夹时拉入 SciLexer.dll。
【解决方案2】:

我通过将文件复制到C:\Windows\SysWOW64解决了这个问题

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

【讨论】:

  • 一般来说,这可能不是客户端安装的选项(最佳安全实践,在同一台机器上进行多个安装 - 例如,您不能使用此策略安装两个不同的版本)。
  • SciLexer.dllSciLLexer64.dll 复制到PATH 指定的文件夹中为我解决了这个问题。 VS 2019 在这样做时能够加载设计器。
【解决方案3】:

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

https://github.com/jacobslusser/ScintillaNET

【讨论】:

【解决方案4】:

单击 RUN 并选择 MyComputer 右键单击​​ MyComputer 转到 Properties 然后 点击高级系统设置。

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

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

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

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

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

从屏幕右侧选择下载。

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

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

然后运行它会运行的应用程序。

【讨论】:

    【解决方案5】:

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

    【讨论】:

    • 我认为您安装了一些工具,该工具本身已添加到路径变量中并包含 SciLexer.dll(例如 TortoiseSVN)。在这种情况下,将选择来自该位置的 dll,并且您的工具将无法在干净安装的机器上运行。要检查这一点,请打开命令提示符并输入 where SciLexer.dll。如果您发现某些东西暂时重命名该文件并重新启动您的工具。最后但并非最不重要的一点是运行ProcessMonitor 并检查您的 SciLexer.dll 将从何处加载。
    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 2019-09-23
    • 2013-03-07
    • 2018-10-12
    • 2013-08-30
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多