Как лучше всего использовать Версия блока и Версия файла?

Из учебника Java Tutorial :

Вложенные классы делятся на две категории: статические и нестатические. Вложенные классы, объявленные static, просто называются статическими вложенными классами. Нестатические вложенные классы называются внутренними классами.

blockquote>

Доступ к статическим вложенным классам осуществляется с помощью имени класса:

OuterClass.StaticNestedClass

Например, чтобы создать объект для статического вложенного класса, используйте этот синтаксис:

OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();

Объекты, являющиеся экземплярами внутреннего класса, существуют в экземпляре внешнего класса. Рассмотрим следующие классы:

class OuterClass {
    ...
    class InnerClass {
        ...
    }
}

Экземпляр InnerClass может существовать только внутри экземпляра OuterClass и имеет прямой доступ к методам и полям его вмещающего экземпляра.

Чтобы создать экземпляр внутренний класс, вы должны сначала создать экземпляр внешнего класса. Затем создайте внутренний объект внутри внешнего объекта с помощью этого синтаксиса:

OuterClass.InnerClass innerObject = outerObject.new InnerClass();

см.: Учебник по Java - вложенные классы

Для полноты отметим, что там также является внутренним классом без вмещающего экземпляра :

class A {
  int t() { return 1; }
  static A a =  new A() { int t() { return 2; } };
}

Здесь new A() { ... } является внутренним классом , определенным в статическом контексте и не имеет охватывающего экземпляра.

55
задан Mrchief 10 July 2013 в 16:07
поделиться

7 ответов

В сценарии, где у меня есть несколько блоков файла (т.е. 1 exe и 5 dlls) я буду использовать различную версию файла для каждого, но та же версия блока для всех них, позволяя Вам знать, с которым идут exe каждый из dlls.

14
ответ дан Adam Haile 26 November 2019 в 17:45
поделиться

В решениях с несколькими проектами одна вещь я нашел очень полезными, должен иметь всю точку файлов AssemblyInfo к единственному проекту, который управляет управлением версиями. Таким образом, мои AssemblyInfos имеют строку:

[assembly: AssemblyVersion(Foo.StaticVersion.Bar)]

у меня есть проект с единственным файлом, который объявляет строку:

namespace Foo
{
    public static class StaticVersion
    {
         public const string Bar= "3.0.216.0"; // 08/01/2008 17:28:35
    }
}

Мой автоматизированный процесс сборки тогда просто меняет ту струну путем получения по запросу новой версии от базы данных и постепенного увеличения предпоследнего числа.

я только изменяю Номер основной сборки, когда featureset изменяется существенно.

я не изменяю версию файла вообще.

74
ответ дан Jon Dewees 26 November 2019 в 17:45
поделиться

Статья KB упоминает самое важное различие: Версии файла только используются в целях дисплея, тогда как версия блока играет важную роль в поведении загрузки.NET.

при изменении номера версии блока, тогда идентификационные данные блока в целом изменились. Разработчики должны будут восстановить для ссылки на новую версию (если Вы не поместите некоторое автоуправление версиями "политика" на месте), и во времени выполнения только будут загружены блоки с соответствием номерам версий.

Это важно в моей среде, где нам нужны постепенное увеличение, очень видимый номер версии для целей аудита, но мы не хотим вынуждать разработчиков восстановить или иметь много версий одновременно в производстве. В этом случае для backwardly-совместимых незначительных изменений мы обновляем версию файла, но не версию блока.

22
ответ дан voyce 26 November 2019 в 17:45
поделиться

@Adam: Вы изменяете версию файла с каждой сборкой? Вы используете управление версиями (SYN или VSS) и используете ту информацию для соединения источника назад с двоичными файлами?

, Кажется, имеет смысл, что версия блока остается такой же. т.е. "2.0.0.0". Это соответствует развертыванию продукта.

версия файла изменяется для соответствия пересмотру от управления исходным кодом. "2.0.??. пересмотр" Это предоставило бы ссылку от определенного dll (или exe) к источнику, который создал его.

3
ответ дан Rick 26 November 2019 в 17:45
поделиться

Я сохраняю их тем же. Но тогда, у меня нет многофайловых сборок, который является, когда номер AssemblyVersion становится важным. Я использую кодирование даты стиля Microsoft для своих номеров сборки, вместо того, чтобы автоувеличить (я не нахожу количество раз, что что-то было создано, чтобы быть всем этим важным).

0
ответ дан TheSmurf 26 November 2019 в 17:45
поделиться

Версии файлов используются только для отображения, тогда как версия сборки играет важную роль в поведении загрузки .NET.

Не совсем. Версия файла также важна для установщика Windows при обновлении существующей версии по сравнению с предыдущей.

13
ответ дан 26 November 2019 в 17:45
поделиться

В моем текущем приложении каждый проект VS имеет ссылку на исходный файл AssemblyBuildInfo со следующими атрибутами:

[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyCompany("Acme Corporationy")]
[assembly: AssemblyCopyright("Copyright ©  2009 Acme Corporation")]

Таким образом, все сборки в моем решении имеют одинаковую версию и информация о компании (то есть если мне нужно ее изменить, я изменяю ее только один раз). Если исключить FileVersion, автоматически устанавливается AssemblyVersion.

12
ответ дан 26 November 2019 в 17:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: