Статьи

Автоматическое увеличение версии для приложений Windows Phone

Увеличение версии для проектов Windows Phone в настоящее время должно выполняться вручную, поскольку разработчики обновляют атрибут версии в файле WMAppManifest.xml . Всякий раз, когда я устанавливаю приложение, над которым я сейчас работаю, мне всегда интересно, есть ли на устройстве Windows Phone самая последняя доступная сборка. В статической версии это становится проблемой, потому что часто изменения не визуальные, а выполняются в фоновом режиме

Поскольку нет встроенных возможностей приращения версии, я разработал очень простое консольное приложение, которое запускается перед процессом сборки, изменяя текущее значение в файле WMAppManifest.xml . Вот источник — он настолько прост, насколько он может получить:

using System;
using System.Linq;
using System.Xml;

namespace WPVersionIncrementer
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Count() == 5)
            {
                // Separate all parameters. If there aren't five of them, ignore execution.
                string path = args[0];
                string incrementMajor = args[1];
                string incrementMiddle = args[2];
                string incrementMinor = args[3];
                string incrementBuild = args[4];

                XmlDocument document = new XmlDocument();
                document.Load(path);

                XmlNode node = document.DocumentElement;
                XmlNode appNode = node["App"];

                string rawVersion = appNode.Attributes["Version"].Value.ToString();
                string[] components = rawVersion.Split(new char[] { '.' });

                // Get integer values for all four version components for easy manipulation
                // read: increment
                int major,middle,minor,build;

                int.TryParse(components[0], out major);
                int.TryParse(components[1], out middle);
                int.TryParse(components[2], out minor);
                int.TryParse(components[3], out build);

                if (incrementMajor.ToLower() == "-i")
                {
                    major++;
                }

                if (incrementMiddle.ToLower() == "-i")
                {
                    middle++;
                }

                if (incrementMinor.ToLower() == "-i")
                {
                    minor++;
                }

                if (incrementBuild.ToLower() == "-i")
                {
                    build++;
                }

                // Compose the new version in a unified string and save it. The order of all components
                // is preserved.
                string compositeNewVersion = string.Format("{0}.{1}.{2}.{3}", major, middle, minor, build);
                appNode.Attributes["Version"].Value = compositeNewVersion;
                document.Save(path);

                Console.ReadLine();
            }
        }
    }
}

Чтобы фактически выполнить приращение, щелкните правой кнопкой мыши проект Windows Phone в обозревателе решений и выберите « Свойства» . Выберите Build Events и используйте это для командной строки события Post-build :

"C:\Users\Dennis\Documents\Visual Studio 2010\Projects\WPVersionIncrementer\WPVersionIncrementer\bin\Release\WPVersionIncrementer.exe" "$(ProjectDir)Properties\WMAppManifest.xml" -n -n -n -i

Здесь я должен упомянуть несколько вещей:

  • Путь может отличаться — в зависимости от того, где находится WPVersionIncrementer, вы можете изменить расположение в приведенной выше команде. 
  • Используйте кавычки для пути — если вы знаете, что исполняемая папка содержит имена папок, состоящие из двух или более слов, разделенных пробелом, вам нужны кавычки для правильного распознавания пути.
  • Используйте 5 параметров — даже если вам нужно только увеличить номер сборки, укажите, что вам не нужно увеличивать другие показатели. Например, вы можете использовать такую ​​команду: WPVersionIncrementer PATH_TO_XML -n -n -i -i Только параметр -i распознается как флаг для увеличения значения. Параметры структурированы в порядке строки версии: Major, Middle, Minor, Build .
  • Используйте папку « Свойства » для изменения файла WMAppManifest.xml и НЕ « Отладка или выпуск» , где он также найден, но фактически скопирован во время сборки из « Свойства» .

После выполнения команды и возврата в Visual Studio вы получите уведомление о том, что один файл в проекте был изменен и должен быть перезагружен:

Теперь, когда WMAppManifest имеет обновленную версию, вы всегда можете прочитать ее внутри и отобразить на экране «О программе» или в любом месте приложения.

Рекомендуемое чтение:   чтение локального XML-файла в Windows Phone 7

Вы можете скачать экспериментальный исходный код здесь .