【问题标题】:Open embedded file in Windows program在 Windows 程序中打开嵌入文件
【发布时间】:2021-03-13 06:54:21
【问题描述】:

我在我的 C# 程序中的资源上放置了一个文件。我尝试在特定应用中打开它,但不明白如何。

我已经看到了:.NET: Open files, which are embedded in a resource file

还有这个:Use embedded file from resources.resx in program

我需要在 Revit.exe 中打开嵌入式资源“TEST.rvt”(Autodesk Revit 文件)

我不想将文件复制到我的系统中,因此无法设置Copy to Output Directory 选项。

有可能吗?

【问题讨论】:

  • 你想怎么打开它?查看文件的内容?用 Revit 打开它?你想用它做什么?
  • 用 Revit 打开它是的。
  • 它不适用于 EMBEDDED 文件。
  • 也许 this 会有所帮助,即使是 PDF 文件

标签: c# embed revit-api


【解决方案1】:

我没有 Revit,所以我不知道这是否可行。但如果不设置Copy to Output Directory,以下内容似乎适用于记事本中的.txt 文件。

string textFile = Properties.Resources.Testfile;

Process process = new Process();
process.StartInfo.FileName = "Notepad.exe"; // Set this to Revit.exe or whatever name it has
process.StartInfo.Arguments = textFile;
process.Start();

Properties.Resources.Testfile 是项目中嵌入的.txt 文件。

我不知道.rvt 文件是什么样的,所以我不知道这是否能正常工作。

【讨论】:

  • .rvt 似乎是一个 byte[] 所以它不起作用:/ prnt.sc/vto4dt
  • 返回“找不到指定文件”,如您所见prnt.sc/vto75d 我认为从 byte[] 转换为 string 是个坏主意 :)
  • 作为一个测试,File.WriteAllBytes(Properties.Resources.TEST, Encoding.Unicode.GetBytes(Properties.Resources.TEST)); 在做Process 之前工作吗?我认为它确实覆盖了文件思想:/ 也许Unicode 在这里也不是最好的主意。
  • 也许我可以只给出一个字节[] 而不是字符串。也许 Revit.exe 可以理解这种类型的参数而不是字符串。我也在尝试你的解决方案。
【解决方案2】:

我可以在互联网上的许多线程上阅读,这似乎是不可能的。我会将我的 .rvt 复制到一个临时文件夹中,并在使用它们之前将其删除。

要复制它们,我使用this thread的解决方案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 2014-06-23
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多