调试和 clickonce 发布时正确使用 Application.GetContentStream

Correct useage of Application.GetContentStream while debugging and click once publishing

根据我之前的问题,publishing a content file,我有这样的设置:

假设我有 PrinterMap.xml 的正确 URI,Application.GetContentStream(Uri) 是否允许在构建过程放置 PrinterMap.xml 的地方进行调试在 C:\Nova6\Nursing_Desk\bin\Debug\Settings 目录和点击一次发布目录 C:\Users\Me\AppData\Local\Apps.0RPPH36W.WAY\MN0L8QBO.1R4\nurs..tion_f6d771115904d935_0001.0000_f6a09aea8a2c02e5\Settings\ReportMap.xml?

也就是说,我可以在调试此应用程序时使用 Application.GetContentStream(Uri) 还是有更好的方法或首选程序设计?
这里有最佳实践吗? (执行此操作的正确 Uri 是什么?)

感谢您对此的任何指导。

您可以使用 GetContentStream 仅指定文件名,这样目录将自动设置为执行程序集位置(即当前文件夹)。

或者,如果您不想将文件暴露给文件系统并将其嵌入到程序集中(通常情况下,如果您的程序集不依赖于外部文件会更好),请改用 Assembly.GetManifestResourceStream ,例如:

using var stream =
  Assembly
    .GetExecutingAssembly()
    .GetManifestResourceStream("Resources.PrinterMap.xml");

您还可以使用项目属性添加资源。
右键单击当前项目并转到属性,然后导航到 Resources 选项卡,单击 Add Resource 和 select 旁边的箭头添加现有文件...:

如果您可以直接访问该文件:

byte[] myXmlFile = MyProject.Properties.Resources.PrinterMap;

您也可以将 XML 数据作为字符串添加并直接解析 XML。