2017-09-22 189 views
1

我在解決方案中有兩個單獨的項目。在執行項目c中獲取文件的路徑#

第一個項目是隻是一個測試控制檯項目。 而第二個項目是公共庫項目。

我有靜態類Common Lib包含需要讀取文件(用於OpenNLP)的靜態方法的項目。

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

我添加文件 「EnglishSD.nbin」 到公共庫項目。我改變了該文件的屬性爲「內容」和「始終複製」太多。它確實將該文件添加到bin/debug文件夾Common Lib項目。 編輯:「EnglishSD.nbin」位於夾OpenNLP/EnglishSD.nbin

問題:當我運行測試控制檯項目,該項目將使用常見的lib項目靜態函數。它試圖尋找「EnglishSD.nbin」到測試控制檯項目,而不是常見的項目的bin文件夾。這導致'FileNotFound'錯誤。

有什麼辦法來獲取文件的路徑,而不必擔心在那裏它被稱爲從?

回答

0

所以你的測試臺引用你的Common Lib?然後,當您構建測試控制檯時,CommonLib.dll將被複制到測試控制檯項目文件夾中。我不知道是否有一種自動的方式來複制主項目引用的庫的依賴關係...

但是你可以設置它。使用測試控制檯項目的後期生成事件和複製您所需的文件手動(我假設你公共庫項目文件夾是/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");