2012-01-24 73 views
0

我有一個Visual Studio 2010項目引用另一個項目的DLL。 我也成功地創建了一個服務來啓動這個應用程序。Windows服務將只從Visual Studio發佈文件夾創建時運行

要創建服務,我只需運行一個批處理文件,從.net4區域調用installutil.exe,並將其指向VS項目的Release文件夾中的.exe文件。發佈文件夾還包含引用的dll的副本。

有了這種安排一切工作正常 - 我可以通過服務訪問該DLL。

但是,如果我嘗試從發佈文件夾以外的任何地方創建服務,則不起作用。 解釋: 我將VS Release文件夾中的所有文件複製到另一個不相關的文件夾中,並修改了安裝腳本中的路徑。該服務已成功創建並啓動。不幸的是,當以這種方式創建服務時,我無法通過服務訪問dll。爲什麼?

+0

你是什麼意思的「我可以通過服務訪問該DLL」? – arx

回答

0

我很好奇,如果當前的工作目錄是Release文件夾,當它工作。也許這是因爲工作目錄不在.dll文件所在的場景中。在調用.exe之前,您是否嘗試過先更改目錄?

+0

不確定你在這裏是什麼意思。我的VS項目在它自己的項目Release文件夾中引用了dll。項目構建完成後,我的VS項目將此dll複製到其自己的「發行」文件夾中。我測試了我可以通過運行生成的.exe以及它作爲服務運行的Release文件夾來運行應用程序。將我的VS Release文件夾中的所有文件複製到任何其他文件夾,並通過將其指向新位置來創建服務將按預期創建服務。它只是不會工作。是否有其他文件需要從VS文件系統? – user1167796

+0

@ user1167796很難想象所有的可能性......你是從命令提示符執行此操作還是隻需雙擊.exe或批處理文件?基本上我問是否工作目錄設置爲.DLL文件存在的位置。看看任何程序圖標的屬性,你會看到一個'開始'設置,將工作目錄預設爲程序所在的同一目錄。我想知道該應用程序是否在VS文件夾中工作,因爲它已經在工作夾。 –

相關問題