获取C#中链接资源的相对路径

时间:2010-03-27 22:14:28

标签: c# .net winforms resources

我正在处理的C#项目中有许多链接资源(本例中是文本文件)。我知道资源是通过Resources文件中的相对路径链接的。有没有办法从C#代码中获取相对路径?

如果没有,我要做的是将该资源文件作为命令行参数传递给外部应用程序。如果我不能以第一种方式(这显然是最容易的)做任何其他建议将非常感激。谢谢!

3 个答案:

答案 0 :(得分:1)

编译后,资源文件是dll的一部分。因此,它们在您分发的文件系统中不再存在。如果您需要将资源文件作为资源,那么Hueso的解决方案是将文件传递到外部应用程序的唯一方法。

但是,如果您不介意用户可以访问的文件,您可以将BuildAction设置为Content,并将Copy to Output Directory设置为Copy if newer或{ {1}}。然后将文件复制到输出目录中,并可从那里访问。如果文件位于子文件夹中,则这些子文件夹也会复制到输出目录中。

修改

对于各种构建操作及其效果,请参阅:

答案 1 :(得分:0)

我认为您可以获取资源,将其保存到临时文件夹,然后提供命令行外部应用程序的路径,这是一种快速而肮脏的方式,但这是主要的想法:

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

答案 2 :(得分:0)

这三行将您的资源文件和输出转换为字节数组,然后将其写入磁盘上的文件。

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

File.WriteAllBytes("Filepath", byteArray);