40

プロジェクトでScintilla.NETを使用しようとしています(優れたエディターと構文の強調表示などが必要です)。残念ながら、プロジェクトでバイナリを参照すると、Scintillaコントロールを実際に使用できないようです。2つの異なるエラーが発生します。

  1. 1つ目は、プロジェクトへの参照としてSciLexer.dllを追加するときに発生します。次のようなメッセージが表示 されます。SciLexer.dllへの参照を追加できませんでした。ファイルにアクセスできること、およびファイルが有効なアセンブリまたはCOMコンポーネントであることを確認してください。

  2. 2番目のエラーは、ScintillaNET.dllのコントロールを使用しようとすると発生します。コンポーネントをフォームにドラッグしようとすると、次のメッセージが表示されます。コンポーネントScintillaの作成に失敗しました。エラーメッセージは次のとおりです。System.ComponentModel.Win32Exception:%1はScintillaNet.Scintilla.get_CreateParams()で有効なWin32アプリケーションではありません

これらの問題のいずれかで助けていただければ幸いです。ちなみに、私は64ビットのWindows7プラットフォームで実行されているVisualStudio2008を実行しています。

ありがとう。

4

5 に答える 5

27

Scintilla を使用してから少し時間が経ちましたが、私の理解では、SciLexer.dll は完全にネイティブな DLL であり、Visual Studio から参照を追加することはできません。

代わりに、実行時に SciLexer.dll が適切なディレクトリに表示されるように「配置」して、ScintillaNET.dll によってロードできるようにする必要があります。これを行う最も安全な方法は、SciLexer.dll を Visual Studio プロジェクトにプレーン ファイルとして (参照としてではなく) 追加し、ファイルのプロパティを変更して、プロジェクトのビルド時に出力ディレクトリにコピーされるようにすることです。

64 ビットを使用していることを考えると、AnyCPU ではなく、具体的に 32 ビットとしてアプリをビルドする必要があると思います。私が言ったように、これを行ってからしばらく経ちましたが、私が行ったとき、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/jacobslusser/ScintillaNET

于 2015-09-16T21:49:05.377 に答える