我有一个自己编写的C# WPF .NETCORE应用程序,现在需要为它生成一个MSIX安装程序。
在C#项目中,我有各种配置文件(*.json、*.csv、*.xml),应用程序在启动时需要这些文件来设置应用程序的状态(api位置等)。
当我从Visual调试器运行该应用程序时,它在调试或发布时运行良好。
当我从VS中的发布选项“发布”时,如果我手动地将文件复制到与发布的单个文件可执行文件相同的级别,它就能工作。
当我在VS中使用(我的wpf应用程序被引用为项目引用)打包应用程序时,我可以安装和执行,但是当它试图加载.json文件时它会崩溃。
xaml引用的徽标映像与配置内容(目录名为/images、/configs等的子目录)所在的文件夹相同,“Resources / image /logo.png”正在加载。在app start和参考"Resources/ configs /api.json“中加载这些信任
我可以看到构建中包含了参考资料目录,但是当我在应用程序包中运行cmd时,应用程序是在system32中启动的,这说明它没有从相对路径加载到可执行位置。
我怀疑我没有以现代的msix方式将WPF应用程序中的资源包括在内,并且需要修复它,而不是将我的资源添加到m6中?或者我只需要用其他方式包含我的资源就行了?
谢谢你的帮忙
编辑:
@MM8
当主窗口启动时。根据在所述窗口中选择的选项,加载不同的配置文件集。用这一行将文件读入字符串;
var text = File.ReadAllText(filePath);例如:
我有一个函数"LoadPatientInformationLeafletService“,它要求加载配置。在职能方面:
var config = SerializationService.FromJSONFile<PatientInformationLeafletConfig>("/Resources/PatientInformationLeafletConfiguration.json"); FromJSONFile将文件加载到字符串(如上),用newtonsoft反序列化并返回PatientInformationLeafletConfig对象。
参考资料dir与可执行文件处于同一级别,并被复制到同一级别的m6包。
发布于 2022-11-14 15:44:14
确保文件的Build Action已设置为Content,COpy to Output Directory属性已设置为Copy Always。
然后使用绝对路径:
var config = SerializationService.FromJSONFile<PatientInformationLeafletConfig>(
System.AppContext.BaseDirectory + "/Resources/PatientInformationLeafletConfiguration.json"); https://stackoverflow.com/questions/74432741
复制相似问题