Динамически отображать текущий год в сборке

Как установить текущий год в файле 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?