Команда Entity Framework «Enable-Migrations» создает файл Configurations.cs, закодированный в ANSI. Зачем? - PullRequest
1 голос
/ 28 марта 2012

Я использую EF Code First с миграциями для проекта, и я наткнулся на странное поведение:

При выполнении команды «Enable-Migrations» в консоли диспетчера пакетов создается папка «Migrations» и файл «Configurations.cs». Когда я проверяю кодировку «Configurations.cs» в Notepad ++, он показывает, что он закодирован в ANSI.

Когда я создаю произвольный файл в Visual Studio 2010, он всегда кодируется в UTF-8. Почему NuGet генерирует файл в другой кодировке?

Заранее спасибо, Chris

Ответы [ 2 ]

2 голосов
/ 14 апреля 2012

Я наконец нашел время, чтобы должным образом расследовать это ...

Файлы (Configuration.cs и отдельные файлы миграции) фактически сохраняются как UTF-8 без подписи файла. Этот формат неотличим от ANSI, если где-то в файле нет не-ANSI символов. Такие инструменты, как Notepad ++, будут отображать его как UTF-8 только в том случае, если в файле есть не-ANSI символы. Это связано с тем, что файл UTF-8, содержащий только символы ANSI, на 100% совместим с форматом ANSI.

Если в имени типа контекста, именах таблиц и т. Д. У вас есть не-ANSI символы, все будет работать так, как вы ожидаете, и Notepad ++ сообщит о формате файла как UTF-8.

1 голос
/ 29 марта 2012

Файл конфигурации фактически сохраняется как шаблон, встроенный в сборку в пакете NuGet, а затем обрабатывается и копируется в ваш проект при использовании Enable-Migrations. Сохраненный шаблон представляет собой файл ANSI, и, следовательно, полученный файл является файлом ANSI. Вы должны быть в состоянии повторно сохранить его как UTF-8 - время выполнения не имеет значения.

...