web-dev-qa-db-ja.com

C#プロジェクトでScintilla .NETを使用する方法

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

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

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

これらの問題のいずれかで何か助けていただければ幸いです。記録のために、私は64ビットWindows 7プラットフォームで実行されているVisual Studio 2008を実行しています。

ありがとう。

39
JasCav

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

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

64ビットを使用していることを考えると、 AnyCPUではなく、具体的には32ビットでアプリをビルドする が必要になると思います。言ったように、私がこれを行ってからしばらく経ちましたが、私が行ったとき、Scintillaには32ビットのバイナリしかありませんでした。

26
Tim Robinson

ファイルをC:\Windows\SysWOW64にコピーして問題を解決しました

@westonの投稿からアイデアを得ました。

3
Steve

ScintillaNET(C#ポート)を使用しています。それは使いやすいですが、それは思い出の独り占めです。

https://github.com/jacobslusser/ScintillaNET

1
Dan Gifford

enter image description here

[実行]をクリックし、[マイコンピュータ]を選択します。[マイコンピュータ]を右クリックして[プロパティ]に移動し、[システムの詳細設定]をクリックします。

その後、[詳細設定]を選択し、[環境変数]をクリックします。

ここで、値とパスを追加できます。

値:好きなもの "例:Scintilla

値のパス:ダウンロードしたdllが保存された場所。 "EG:D:\ prathap\DLL \

ダウンロードパス: https://scintillanet.codeplex.com/releases

画面の右側からダウンロードを選択します。

次に、アプリケーションで、Scintill Dllを参照として追加し、他の2つのdllを既存のファイルとして追加します。

プロジェクトADD-Addexisting files-を右クリックして、ローカルシステムからファイルを選択し、2つのファイル「Copy to Output directory = Copy Always」を保持していることを確認します。

次に、機能するアプリケーションを実行します。

0