[英]How to open <visualStudioProject>.sln TXT file in visual studio 2012
[英]open file from folder in visual studio 2012
我的桌面上有一個文件夾,里面有文件。 我將其復制到解決方案的文件夾中,在解決方案資源管理器中,我將該文件夾引用到了解決方案中。 但是,我無法使用相對路徑打開該文件夾中的文件。
在解決方案資源管理器中可以看到,來自cs文件的相對路徑為“ ../FolderIAdded/blabla”。 但是在Windows資源管理器中,路徑當然是不同的:
Solutionfolder
- SolutionFolder.sln
- Solutionfolder.v11.suo
- SolutionFolder
-- bin
-- obj
-- Properties
-- TheFolderIAdded
-- App.config
-- Form1.cs
-- etc.
在這里,它將是“ FolderIAdded / blabla”
我必須在哪里放置該文件夾?
我的目標:我希望能夠使用相對路徑從c#代碼中的該文件夾中打開文件。
您假設程序在源代碼所在的目錄中運行。 事實並非如此。 根據您的配置,您的程序將從Solutionfolder \\ bin中的目錄執行。
一種可能的解決方案是在構建項目時將文件復制到輸出目錄。
另一種選擇是在編譯時將文件嵌入到應用程序的程序集中,盡管這樣可以防止在部署后對其進行編輯。 為此,將“構建操作”設置為“嵌入式資源”,然后可以使用Assembly
類的GetManifestResourceStream
方法訪問它們。 您需要提供的文件名將從項目結構中的路徑派生,因此在您的示例中,文件名將為“ TheFolderIAdded.Filename.ext”。
是的,那是一個點,而不是反斜杠。
假設將文件嵌入到要讀取它們的代碼所在的同一程序集中,則代碼將類似於
var assembly = Assembly.GetExecutingAssembly();
using (var stream =
assembly.GetManifestResourceStream("TheFolderIAdded.Filename.ext"))
using (var reader = new StreamReader(stream)) {
string fileContents = reader.ReadToEnd();
}
我認為從.cs文件寫入相對路徑不是一個好主意。 更好地根據應用程序的執行位置構建路徑 :一個示例,網絡上還有很多其他東西: 如何在.NET控制台應用程序中獲取應用程序的路徑?
(您的應用程序不在解決方案的根文件夾中運行,但位於.exe文件所在的位置。例如,在調試桌面應用程序時,它通常從[solution folder] / bin / debug /運行)
然后確保將要打開的文件屬性復制到輸出目錄設置為始終 復制或如果更新則復制 。 (在解決方案資源管理器中右鍵單擊該文件,然后單擊“屬性”以確保可以訪問它。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.