在Windows Phone 7中,有没有办法在代码中构建应用程序或编译日期? 我想显示日期以及版本号,以便为我的应用程序提供支持。
如果没有立即可用,任何提示或替代方案? (我猜一个是设置应用程序设置,这很好。)
答案 0 :(得分:3)
您可以解析Assembly.GetExecutingAssembly().FullName
之外的版本号。
输出为此格式
PhoneApp,版本= 1.0.0.0, Culture = neutral,PublicKeyToken = null
构建日期似乎不可用,并且可以说如果您在每个版本中增加版本号,则不需要它。如果对您的应用程序很重要,您可以将其存储在其他地方。
答案 1 :(得分:2)
构建的日期(和时间)不包含在程序集中 如果您可以通过电话访问文件系统,您可以从中获取日期,但可能会受到市场摄取过程的影响(代码签名时),因此您可能无法保证这一点。 / p>
如果您使用*
作为版本号的构建部分,然后从中计算出构建日期。 (这是自2000-01-01以来的天数。)
或者,您可以在构建过程中添加一些内容来设置属性或设置。
或者,如果您的版本控制系统使用SVN,则可以在带有SubWcRev.exe的模板中使用$WCDATE$
进行设置。
或者,您可以通过使用T4将其添加到应用程序 TT文件中的以下内容应该可以解决问题:
<#@ template language="C#" #>
<#@ import namespace="System" #>
using System.Windows;
namespace MyNamespace
{
public partial class App : Application
{
public string BuildDate { get { return "<#= DateTime.Now #>"; } }
}
}
答案 2 :(得分:1)
在Windows Phone 7+上获取应用版本:https://stackoverflow.com/a/22838743/1033581
这是WP7代码:
var xmlReaderSettings = new XmlReaderSettings
{
XmlResolver = new XmlXapResolver()
};
using (var xmlReader = XmlReader.Create("WMAppManifest.xml", xmlReaderSettings))
{
xmlReader.ReadToDescendant("App");
return xmlReader.GetAttribute("Version");
}
在Windows Phone 8+上获取应用版本:https://stackoverflow.com/a/23387825/1033581
这是WP8代码:
using (var stream = new FileStream("WMAppManifest.xml", FileMode.Open, FileAccess.Read))
{
var appVersion = XElement.Load(stream).Descendants("App").FirstOrDefault().Attribute("Version");
return appVersion != null ? appVersion.Value : null;
}
答案 3 :(得分:1)
添加代码:
private static DateTime UpdatedAt()
{
var streamResourceInfo = Application.GetResourceStream(new Uri("BuildDate.txt", UriKind.Relative));
var reader = new StreamReader(streamResourceInfo.Stream);
string text = reader.ReadToEnd();
var substring = text.Substring(0, text.Length - 6); // text = "11.05.2014 20:44:52,07 \n\r"
var exact = DateTime.ParseExact(substring, "dd.MM.yyyy HH:mm:ss", CultureInfo.InvariantCulture);
return exact;
}