在 XML 标记之间增加版本

Posted

技术标签:

【中文标题】在 XML 标记之间增加版本【英文标题】:Increasing a version between a XML Tag 【发布时间】:2020-03-30 14:38:14 【问题描述】:

我已申请更新我的其他应用程序。我正在使用 autoupdater.net 库来处理更新。我的问题是如何从另一个应用程序获取一个应用程序的版本?

<?xml version="1.0" encoding="UTF-8"?>
<item>
    <version>1.0.1.0</version> // I would like to update this with the assembly version of another application
    <url></url>
    <changelog></changelog>
    <mandatory mode="2">true</mandatory>
</item>

此应用程序所做的是删除当前 zip,压缩发布文件夹,然后最后一步是使用新版本号更新此 xml 文档。

【问题讨论】:

这能回答你的问题吗? Modify XML existing content in C# @HereticMonkey 有助于编辑,但我需要能够获取其他程序集的版本号才能写入注释。 自己做一些研究会很好...Getting the Version of my C# app? @HereticMonkey 阅读这个问题会很好......不要试图获取应用程序更新程序应用程序的版本号,只是它正在更新的应用程序的版本...... 考虑到您的问题不包含代码,并且没有引用哪个应用程序在哪里获取哪个版本。这是一个艰难的过程。我不得不在搜索短语“如何获取另一个程序集的版本”中添加“另一个”:How to get Assembly Version (not File Version) for another EXE? 【参考方案1】:

这应该可行:

XmlDocument doc = new XmlDocument();
doc.Load(@"filepath");

var versionNode = doc.SelectSingleNode("item/version");
versionNode.InnerText = Assembly.GetExecutingAssembly().GetName().Version.ToString();
doc.Save(@"filepath");

如果您的磁盘上没有文件,您也可以直接从字符串加载 xml。这也获取正在执行的程序集的版本字符串。如果需要,将其替换为版本号。

【讨论】:

非常接近,但我正在尝试获取完全不同程序集的程序集版本 您也可以使用 Assembly.GetAssembly(someTypeInTargetAssembly) 来获取另一个程序集版本 或者,如果您需要在不加载程序集的情况下获取程序集的版本,请尝试以下操作:***.com/questions/187999/… 我用您提供的 xml 对其进行了测试,对我有用。要使用 SelectSingleNode 浏览节点,您只需使用 xpath 语法。以下是可用选项列表:w3schools.com/xml/xpath_syntax.asp

以上是关于在 XML 标记之间增加版本的主要内容,如果未能解决你的问题,请参考以下文章

XML,json,ajax

新增版本管理及版本对比,接口测试结果增加误报标记,MeterSphere开源持续测试平台v1.17.0发布

XML数据格式

如何在 MATLAB 2014b 的散点图中增加图例的标记大小? [复制]

从从未发布的版本增加 iTunes Connect 版本号

二3 XML