2010-03-19 119 views
1

我有一個名爲XSL的項目文件夾,其中包含用於轉換xml的xsl文件。我用下面的代碼來獲取一個XSL文件:如何確定.Net中項目文件夾的路徑?

​​

這調試但是當我部署使用ClickOnce安裝它時,工作正常,我得到一個錯誤 - 「找不到路徑的一部分{我的用戶文件路徑} \ XSL \ ToHtml.xsl」。它確實需要查看{安裝文件夾} \ XSL \ ToHtml.xsl。

我必須做什麼才能正確引用此路徑?

+1

您確定應用程序的根文件夾下有這樣的路徑嗎? – 2010-03-19 14:10:31

+0

@andrew。你是對的。它缺失。爲什麼?文件設置爲資源,'複製如果更新' – paul 2010-03-19 14:21:40

+0

我將其更改爲**內容,複製如果更新**,它的工作原理!謝謝安德魯 – paul 2010-03-19 14:23:37

回答

0

相對路徑基於當前目錄(Environment.CurrentDirectory),您的應用程序無法控制該路徑。如果你想基地起飛您的應用程序路徑的安裝文件夾使用:

string file = Path.Combine(
    System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), 
    @"XSL\ToHtml.xsl"); 
+0

我很抱歉-1這個,但我剛剛發現,這種做法作爲非管理員運行時中斷,並且用戶單擊快捷方式上的「以管理員身份運行」。由於一些奇怪的原因,GetExecutingAssembly()最終返回快捷方式的位置而不是當前正在執行的程序集的位置。而是使用AppDomain.CurrentDomain.BaseDirectory。這一貫地起作用。 – 2012-05-08 21:36:55

3

正如已經在DSO的回答說,你不應該使用或當你想在您的應用程序可執行文件或程序集是目錄隱含依賴的Environment.CurrentDirectory位於。

但是我會用AppDomain.CurrentDomain.BaseDirectory而不是依賴當前正在執行的程序集的位置。

相關問題