调试和 clickonce 发布时正确使用 Application.GetContentStream
Correct useage of Application.GetContentStream while debugging and click once publishing
根据我之前的问题,publishing a content file,我有这样的设置:
- PrinterMap.xml 的“内容”文件,包含:
- 生成操作:内容
- 复制到输出目录:始终复制
- 此文件在开发过程中的物理位置:
C:\Nova6\PrintingAndReports\Settings\PrinterMap.xml
假设我有 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。
根据我之前的问题,publishing a content file,我有这样的设置:
- PrinterMap.xml 的“内容”文件,包含:
- 生成操作:内容
- 复制到输出目录:始终复制
- 此文件在开发过程中的物理位置:
C:\Nova6\PrintingAndReports\Settings\PrinterMap.xml
假设我有 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。