2017-09-22 3 views
1

私はソリューションで2つのプロジェクトを持っています。プロジェクトを実行する際にファイルへのパスを取得するC#

最初のプロジェクトはテストコンソールプロジェクトです。 2番目のプロジェクトはCommon Libプロジェクトです。

私はファイルを読み込む必要がある静的メソッド(OpenNLP用)を含むCommon Libプロジェクトに静的クラスを持っています。

var sentenceDetector = new EnglishMaximumEntropySentenceDetector("EnglishSD.nbin"); 

私は共通のLibプロジェクトにファイル "EnglishSD.nbin" を追加しました。そのファイルのプロパティを 'コンテンツ'と 'コピー常に'に変更しました。このファイルをbin/debugフォルダCommon Libプロジェクトに追加します。 EDIT: 'EnglishSD.nbin' フォルダにありますOpenNLP/EnglishSD.nbin

問題:私は共通のlibプロジェクト内の静的関数を使用していますテストコンソールプロジェクトを実行します。 'EnglishSD.nbin'をのテストフォルダのbinフォルダに入れて、Common Libプロジェクトの代わりにプロジェクトを探します。これは 'FileNotFound'のエラーにつながります。

どこからファイルを呼び出すのか心配することなくファイルのパスを取得する方法はありますか?

答えて

0

あなたのテストコンソールは、コモンリブを参照していますか?次に、テストコンソールをビルドすると、CommonLib.dllテストコンソールプロジェクトフォルダにコピーされます。メインプロジェクトで参照されているライブラリの依存関係を自動的にコピーする方法があるかどうかはわかりません。

これは設定できます。 テストコンソールプロジェクトのビルド後のイベントを使用して(私はあなたの共通のLibプロジェクトフォルダが/Common Libであると仮定)手動で必要なファイルをコピーします。
copy "$(SolutionDir)Common Lib\EnglishSD.nbin" "$(TargetDir)"

0

マイ悪者。私は実際に 'EnglishSD.nbin'というフォルダを持っていました。したがって、TestConsoleプロジェクトのbin/debugにフォルダを作成し、そこにファイルを配置しました。

私は、(FolderName)/EnglishSD.nbinへのパスを変更する必要がありました。

var sentenceDetector = new EnglishMaximumEntropySentenceDetector("OpenNLP/EnglishSD.nbin"); 
関連する問題