Динамически отображать текущий год в сборке
Как установить текущий год в файле AssemblyInfo?
Я использовал
Вместо этого:
<Assembly: AssemblyCopyright("Copyright 2012, Company Name.")>
попробовал это:
<Assembly: AssemblyCopyright("Copyright" + DateTime.Now.Year.ToString() + ", Company Name.")>
Я получаю недопустимую постоянную ошибку.
Я не хочу использовать записи в разделе реестра, каков оптимальный способ сделать это? (так что, когда пользователь правой кнопкой мыши на EXE и ищет информацию о сборке, можно увидеть текущий год).
Спасибо.
Ответы
Ответ 1
Я увидел что-то в другом посте (fooobar.com/questions/18549/...), который действительно может быть полезен здесь.
Попробуйте это.
Добавьте новый файл в исходный репозиторий, который является общим для всех проектов вашего решения. Вызовите файл как-то вроде AssemblyCopyright.tt
В файле добавьте следующий код для С#
<#@ template language="C#" #>
using System;
using System.Reflection;
[assembly: AssemblyCopyright("Copyright © CompanyName <#=DateTime.Now.Year#>")]
или vb
<#@ template language="VB" #>
<#@ output extension=".vb" #>
Imports System
Imports System.Reflection
<Assembly: AssemblyCopyright("Copyright © CompanyName <#=DateTime.Now.Year#>")>
Затем удалите атрибут AssemblyCopyright из каждого из файлов AssemblyInfo.cs.
Наконец, добавьте ссылку на файл AssemblyCopyright.tt для каждого из ваших проектов.
Файл шаблона воссоздает новый файл AssemblyCopyright.cs для каждой сборки с правильным годом.
Ответ 2
Вероятно, лучший способ - интегрировать это в процесс сборки с помощью таких инструментов, как NAnt или MSBuild.
Вот статья, в которой объясняется, как изменить свою AssemblyInfo с помощью MSBuild:
Обновление Ассембли с номером версии.
Ответ 3
Вы можете использовать задачи NANT/MSBuild для изменения файла AssemblyInfo.cs, как мы делаем, чтобы изменить версию каждой сборки для каждой сборки.
Для получения дополнительной информации посетите http://msbuildtasks.tigris.org/
Ответ 4
Как правило, для такого рода замещения вы используете шаг предварительной сборки, который вызывает script, который автоматически генерирует файл assemblyInfo.cs.
Вы можете посмотреть эту тему: Как вы можете найти и заменить текст в файле с помощью среды командной строки Windows?