使用SVG.NET读取SVG时,程序打包后丢失transform等属性数据求助
解决SVG.NET打包后读取SVG属性丢失问题
可能的排查与解决方向
确认SVG文件读取编码
打包后环境可能因编码不一致导致属性解析异常,强制使用UTF-8编码读取SVG内容:var svgContent = File.ReadAllText(svgPath, Encoding.UTF8); var doc = SvgDocument.FromSvg<SvgDocument>(svgContent);同时检查安装包是否修改了SVG文件(比如压缩、转码操作),确保打包前后SVG文件完全一致。
配置SVG.NET解析器参数
尝试关闭解析器的空白忽略与验证功能,避免属性被过滤:var settings = new SvgReaderSettings(); settings.IgnoreWhitespace = false; settings.ValidationType = ValidationType.None; using (var reader = XmlReader.Create(svgFilePath, settings)) { var doc = SvgDocument.Open(reader); }检查程序运行权限
打包后的程序若安装在系统目录(如C:\Program Files),可能因权限不足导致文件读取不完整。尝试将程序安装到非系统目录,或给运行目录添加读写权限。验证依赖文件完整性
除Svg.dll与System.Drawing外,检查SVG.NET的辅助配置文件(如svg.config)是否被纳入安装包,确保所有Visual Studio输出目录中的依赖文件都被复制到打包后的运行环境。标准化SVG文件格式
部分非标准SVG属性写法可能在打包后环境中被严格解析过滤,将SVG转换为SVG 1.1标准格式,去除自定义或非标准属性写法。
内容的提问来源于stack exchange,提问作者c_ph_r
相关产品推荐
相关产品推荐

