Следуя инструкциям, найденным здесь , я реализовал процесс предварительной сборки, предназначенный для динамического обновления авторских прав сборки а>.
Шаблон для авторских прав
<#@ template language="C#" #>
<#@ output extension=".cs" #>
using System;
using System.Reflection;
[assembly: AssemblyCopyright("Copyright © <#=DateTime.Now.Year#>")]
Если я сохраню файл в VS, полученный файл (и скомпилированная сборка) правильно содержит символ авторского права (©). Когда это делается как часть предварительной сборки, вызывающей TextTransform.exe (в данном случае v12.0), результирующий файл содержит '?' вместо. Я получаю те же результаты, указав encoding="us-ascii"
. Когда для кодировки задан любой из вариантов utf, он отображается как «�». Изменение шаблона для использования © дает те же результаты при компиляции сборки.
Я знаю, что могу работать над включением кода в процессе сборки решения, но это увеличивает нагрузку на новых сотрудников (и настройку новой среды; мы много разрабатываем на виртуальных машинах), гарантируя установку соответствующих SDK. Это также требует ручного вмешательства для каждого проекта с использованием шаблона (наша группа выполняет множество различных проектов в год, и многие из них требуют многолетнего постоянного обслуживания). Этот процесс также вызывает регенерацию для каждой сборки (событие перед сборкой генерируется во временный файл и сравнивается на наличие различий перед попыткой перезаписать). И, наконец, результаты этого пути кажутся такими же, как и с событием перед сборкой.
Какие еще варианты мне не хватает?