我有一個包含名爲「Lib」的文件夾的類庫名稱「VirusScanManager」。該文件夾包含一個命令行掃描程序exe和支持文件。所有這些文件的「Build Action」設置爲「Content」和「Copy to Output Directory」設置爲「始終複製」。如何在網站中運行時訪問類庫中的內容
庫我得到使用以下行的路徑,裏面的文件夾:
string virusCheckFolder
= Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Lib");
我有一個測試類庫一起VirusScanManager參考。當測試運行virusCheckFolder
設置爲
C:\...\Projects\WebSiteMobileAdmin\Tests\bin\Debug\Lib
這工作,因爲該文件被複制那裏。
我還有一個BusinessLogicLayer類庫,它引用了VirusScanManager。當我運行我的網站virusCheckFolder
設置爲
C:\...\WebSites\WebSiteMobileAdmin\Lib
這不起作用,因爲Beaner的建議文件實際拷貝到
C:\...\Projects\WebSiteMobileAdmin\BusinessLogic\bin\Debug\Lib
然後我試圖反思:
string pathToDLL = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase.Replace("file:///", ""));
string virusCheckFolder = Path.Combine(pathToDLL, "Lib");
這給我
C:\...\WebSites\WebSiteMobileAdmin\Bin\Lib
但是這個文件夾不存在。 我有一個對WebsiteMobileAdmin中的BusinessLogicLayer的引用,以及對BusinessLogicLayer中的VirusScanManager的引用。看起來,當我執行構建時,dll會在BusinessLogicLayer \ bin \ debug和WebsiteMobileAdmin \ bin中創建,但lib文件夾僅複製到BusinessLogicLayer \ bin \ debug。
那麼,有沒有辦法讓內部庫的路徑適用於這兩種情況?
請參閱我的編輯。我試過這個,但似乎有2個dll副本,它使用的版本沒有與它的Lib – Colin
我很抱歉,因爲我在理解你在做什麼時有些困難,但是如果我是正確讀取您的Tests類位於WebSiteMobileAdmin命名空間中。它應該位於WebSiteMobileAdmin \ BusinessLogic命名空間中嗎? – jac
有3個名爲BusinessLogicLayer,Tests和VirusScanManager的類庫,每個庫都有自己的名稱空間。 WebSiteMobileAdmin是一個可以引用BusinessLogicLayer的網站。 BusinessLogicLayer具有對VirusScanManager的引用。 VirusScanManager使用一個exe文件,並需要在一個文件夾中創建一個文件。所以我在VirusScanManager項目中創建了一個子文件夾。我想從VirusScanManager的內部獲取文件夾的路徑,以便我可以重新使用類庫,而無需在調用代碼中創建文件夾並將路徑傳入。這有幫助嗎? – Colin