如何獲得c#中的.csproj文件路徑?在c#中VB6 App.Path的等價性是什麼?
我想獲取此信息以檢查該路徑中是否存在文件。所以如果程序找到了這個文件,這意味着它處於調試模式,否則有一個用戶正在執行程序。
但使用Application.ExecutablePath或Application.StartupPath或.....的System.Reflection
點在\調試或\釋放路徑的.exe文件。
如何獲得c#中的.csproj文件路徑?在c#中VB6 App.Path的等價性是什麼?
我想獲取此信息以檢查該路徑中是否存在文件。所以如果程序找到了這個文件,這意味着它處於調試模式,否則有一個用戶正在執行程序。
但使用Application.ExecutablePath或Application.StartupPath或.....的System.Reflection
點在\調試或\釋放路徑的.exe文件。
AFAIK,沒有BCL API會爲您提供.csproj文件的路徑。你應該記得一個.csproj文件是Visual Studio的工件,但是.NET本身並不依賴於VS--你可以使用csc.exe編譯C#應用程序,在這種情況下,你將擁有一個功能完整的.NET應用程序,而無需任何涉及的.csproj文件。
如果你想測試在調試模式下的應用程序是否在運行,你可以使用#if directive,就像這樣:
bool debugging = false;
#if DEBUG
debugging = true;
#endif
定義調試符號時,debugging
變量只會是真實的,它是在Debug配置中編譯的時候。在發佈版本中,debugging
將始終爲false
。
但是,我會認爲首先有這樣的要求是可疑的。
AFAIK無法從代碼中獲取.csproj文件路徑。在絕大多數情況下(開發之後),應用程序將在沒有csproj文件的機器上運行,所以我認爲.net公開這一點並不合理。
如果您所談論的文件包含在您的項目中,則可以將該文件的「複製到輸出目錄」屬性設置爲「始終複製」。那麼當您構建項目時,它將被複制到您的調試或發佈文件夾中。使用Application.ExecutablePath來訪問它。
VB6在與項目相同的目錄中創建了.exe,VB.NET沒有。 VB6的App.Path確實與Application.ExecutablePath的功能相同,只是將.exe寫入了不同的目錄。當您部署程序時,ExecutablePath仍將指向.exe,對於已部署的程序沒有「項目目錄」。
我假設你需要這個,因爲你的程序正在訪問與.exe相同目錄中的文件,這些文件現在存儲在你的項目目錄中。所有你需要做的就是複製它們,IDE使它變得簡單。項目+添加現有項目,選擇文件。在屬性窗口中,設置生成操作=無,並複製到輸出目錄=複製,如果更新。
另一種方法是Project + Properties,Compile選項卡,擦除Build輸出路徑設置。現在它將和VB6一樣工作。但對Release和Debug版本或SSCS不會太好。不要發佈Debug版本,它會在沒有調試器的情況下泄漏。