Как сделать так, чтобы версия AssemblyInfo программы C # .NET CF распространялась в окно свойств проводника? - PullRequest
3 голосов
/ 24 сентября 2008

Похоже, если вы компилируете решение Visual Studio и в вашем файле AssemblyInfo.cs есть версия #, которая должна распространяться, скажем, в диалоге свойств проводника Windows. Таким образом, кто-то может просто щелкнуть правой кнопкой мыши на * .exe и нажать «Свойства», чтобы увидеть версию #. Есть ли в Visual Studio специальная настройка для этого?

пример изображения http://content.screencast.com/users/Pincas/folders/Jing/media/40442efd-6d74-4d8a-8e77-c1e725e6c150/2008-09-24_0849.png

Edit: я должен был упомянуть, что это, в частности, для .NET Compact Framework 2.0, который не поддерживает AssemblyFileVersion. Вся надежда потеряна?

Ответы [ 7 ]

6 голосов
/ 07 октября 2008

Обратите внимание, что атрибут AssemblyFileVersion недоступен в .NET Compact Framework !

См. эту статью Дэниела Мута об обходном пути.

1 голос
/ 24 сентября 2008

Номер версии распространяется на вкладку «Версия» в диалоге свойств, но не до сводки. К сожалению, VS не будет автоматически заполнять сводную информацию о файле, поскольку эта информация является метаданными, прикрепленными к самому файлу. Однако вы можете получить доступ к сводной информации и манипулировать ею самостоятельно, используя бесплатное средство чтения свойств DSO OleDocument от Microsoft.

Вы можете приобрести библиотеку у: http://www.microsoft.com/downloads/details.aspx?FamilyId=9BA6FAC6-520B-4A0A-878A-53EC8300C4C2&displaylang=en

Дополнительную информацию по его использованию можно найти по адресу: http://www.developerfusion.co.uk/show/5093/

РЕДАКТИРОВАТЬ : Как отмечено выше pb и Найджелом Хокинсом, вы можете получить свойство для распространения, используя атрибут AssemblyFileVersion, например:

[assembly: AssemblyFileVersion("1.0.114.0")]
1 голос
/ 24 сентября 2008

Вам необходимо добавить еще один атрибут:

[assembly: AssemblyFileVersion("1.0.114.0")]

Обратите внимание, что вам по-прежнему нужен также AssemblyVerison, чтобы правильно идентифицировать сборку в среде выполнения .NET.

1 голос
/ 24 сентября 2008

Помогает ли атрибут AssemblyFileVersion ?

0 голосов
/ 04 сентября 2014

ПРИМЕЧАНИЕ. Этот ответ предназначен для доступа к свойствам AssemblyInfo в приложении .NET CF 3.5. Он не распространяется на «Свойства» исполняемого файла в проводнике Windows (но может использоваться для записи в файл, на консоль или для отображения в приложении)

Я знаю, что это очень старый вопрос, но вот решение, которое я нашел, используя Reflection и Linq, чтобы получить "AssemblyInformationalVersion" (версия продукта в новых проектах Visual Studio).

Сначала я добавил это в AssemblyInfo.cs (замените строку на то, что вы хотите использовать):

[assembly: AssemblyInformationalVersion("1.0.0.0 Alpha")]

Затем вы можете использовать этот метод для извлечения атрибута (я поместил его в статический класс в файле AssemblyInfo.cs). Метод get представляет собой массив всех атрибутов Assembly, затем выбирает первый результат, соответствующий имени атрибута (и приводит его к правильному типу). Затем можно получить доступ к строке InformationalVersion.

//using System.Reflection;
//using System.Linq;
public static string AssemblyInformationalVersion
{
    get
    {
        AssemblyInformationalVersionAttribute informationalVersion = (AssemblyInformationalVersionAttribute) 
            (AssemblyInformationalVersionAttribute.GetCustomAttributes(Assembly.GetExecutingAssembly())).Where( 
                at => at.GetType().Name == "AssemblyInformationalVersionAttribute").First();

        return informationalVersion.InformationalVersion;
    }
}

Чтобы получить нормальный атрибут AssemblyVersion, я использовал:

//using System.Reflection;
public static string AssemblyVersion
{
    get
    {
        return Assembly.GetExecutingAssembly().GetName().Version.ToString();
    }
}
0 голосов
/ 24 сентября 2008

в моем проекте мы используем FileVersion = YYYY.MM.DD.BUILD (например, 2008.9.24.1), но ProductVersion должен быть major.minor.revision.BUILD мы используем AssemblyInformationalVersion, чтобы обойти это.

AssemblyVersion = "MAJ.MIN.REV.1" -> используется .NET

AssemblyInformationalVersion = "MAJ.MIN.REV.XXX" -> используется в обозревателе ProductVersion

AssemblyFileVersion = "YYYY.MM.DD.XXX" -> используется в FileVersion проводника

0 голосов
/ 24 сентября 2008

Я не уверен, что RevisionNumber является правильным полем для поиска.

Попробуйте проводник, щелкните правой кнопкой мыши -> вкладку версии и посмотрите на поле AssemblyVersion.

...