class AutoVivification(dict):
"""Implementation of perl's autovivification feature."""
def __getitem__(self, item):
try:
return dict.__getitem__(self, item)
except KeyError:
value = self[item] = type(self)()
return value
Тестирование:
a = AutoVivification()
a[1][2][3] = 4
a[1][3][3] = 5
a[1][2]['test'] = 6
print a
Вывод:
{1: {2: {'test': 6, 3: 4}, 3: {3: 5}}}
Проект задач сообщества MSBuild - ваш друг. Проверьте их задачу "SvnInfo".
Также, Даниэль Дубровкин.
Намного проще сделать это перед компиляцией, написав файл AssemblyInfo (или любой файл с атрибутами сборки), который включен в ваши проекты.
Пример записи этого в PowerShell можно найти здесь: https://github.com/craigbeck/rhino-esb/blob/master/psake_ext.ps1#L7-46
Одно предостережение - версии в .net - это не просто строка, а ushort
s, что означает, что они имеют максимальное количество 65535 (см. документы здесь ). Если вы используете ревизию svn (как мы это делали когда-то), ваша сборка сломается, как только она превысит это магическое число.
Почему вы пытаетесь сделать это после компиляции?