VS 2008 Кодирование и MSBuild Exec Task - PullRequest
2 голосов
/ 10 февраля 2009

У меня есть задача msbuild exec, которая вызывает файл cmd для настройки моей базы данных.

Я использую задачу msbuild exec следующим образом:

    <Exec Command="$(SqlFolder)\Setup\SetupDatabase.cmd $(DBServer) MyDB $(SqlCmdRunner)" IgnoreExitCode="False">
        <Output TaskParameter="ExitCode" ItemName="DBSetupExitCode"/>
    </Exec>

В установочном cmd для запуска сценариев sql используется osql.

Все хорошо, за исключением того, что когда я создаю файл sql (таблица / сохраненный процесс и т. Д.) В VS 2008, кодировка (UTF-8?) Вызывает проблемы при запуске из MSBuild. Я получаю неправильную синтаксическую ошибку (рядом с символом, который выглядит как U), но синтаксис правильный. Если я выполняю cmd за пределами MSBuild, он работает как положено.

Если я "Сохранить как" файл sql и "Сохранить с кодировкой" US-ASCII, msbuild НЕ выдаст ошибку, поэтому я считаю, что это проблема с кодировкой.

Пока "Сохранить как" работает, похоже, что должен быть лучший способ. Я хотел бы представить, чтобы другие, использующие MSBuild для настройки своей базы данных, столкнулись с этой проблемой, поэтому ищите советы / подсказки.

1 Ответ

2 голосов
/ 10 февраля 2009

Это действительно странная проблема. Обходной путь - обновить формат шаблона, который Visual Studio 2008 использует для создания файлов SQL. Просто откройте их в Блокноте и сохраните как ANSI (или Unicode, в зависимости от того, что вы предпочитаете). С тех пор, когда вы создаете новый файл SQL в Visual Studio, он автоматически получает правильную кодировку.

В этом каталоге вы найдете пять файлов .SQL, которые необходимо обновить:
C: \ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ Tools \ Templates \ Элементы проекта базы данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...