簡體   English   中英

獲取C#中鏈接資源的相對路徑

[英]Get Relative Path to Linked Resource in C#

我正在處理的C#項目中有許多鏈接資源(本例中是文本文件)。 我知道資源是通過Resources文件中的相對路徑鏈接的。 有沒有辦法從C#代碼中獲取相對路徑?

如果沒有,我想要做的是將該資源文件作為命令行參數傳遞給外部應用程序。 如果我不能以第一種方式(這顯然是最容易的)做任何其他建議將非常感激。 謝謝!

編譯后,資源文件是dll的一部分。 因此,它們在您分發的文件系統中不再存在。 如果您需要將資源文件作為資源,那么Hueso的解決方案是將文件傳遞到外部應用程序的唯一方法。

但是,如果您不介意用戶可以訪問的文件,您可以將BuildAction設置為Content ,並將Copy to Output Directory設置為Copy to Output Directory BuildAction Copy if newerCopy always 然后將文件復制到輸出目錄中,並可從那里訪問。 如果文件位於子文件夾中,則這些子文件夾也會復制到輸出目錄中。

編輯:

對於各種構建操作及其效果,請參閱:

我認為您可以獲取資源,將其保存到臨時文件夾,然后提供命令行外部應用程序的路徑,這是一種快速而骯臟的方式,但這是主要的想法:

var assembly = System.Reflection.Assembly.GetExecutingAssembly();
var stream = assembly.GetManifestResourceStream("Resources.yourFile.txt");
var tempPath = Path.GetTempPath();
File.Save(stream, tempPath);

// use your tempPath here

這三行將您的資源文件和輸出轉換為字節數組,然后將其寫入磁盤上的文件。

byte[] byteArray = new byte[Project.Properties.Resources.File.Length];
Project.Properties.Resources.File.CopyTo(byteArray, 0);

File.WriteAllBytes("Filepath", byteArray);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM