Когда я запускаю msxsl.exe в моем файле DBML, он вводит возврат каретки, который портит последний шаг SQLMetal.exe - PullRequest
0 голосов
/ 17 июня 2019

Я только что обновился с VS 2015 до VS 2019 (и с Windows 7 до Windows 10). Мой проект использует SQLMetal.exe и msxsl.exe в пакетном файле для создания и изменения DBML в три этапа:

  1. Создание файла DataModel.dbml с помощью SQLMetal.exe.
  2. Добавление базы данных преобразуется с помощью msxsl.exe.
  3. Создайте файл DataModel.cs с помощью SQLMetal.exe.

Когда я запустил это в новой среде, он выдал мне странную ошибку:

DataModel.dbml(0) : Error: DBML1112: Element 'Column" must be empty, but contains a node of type Whitespace named ''.

После долгих проб и ошибок я понял, что msxls.exe (который я только что скачал) добавляет возврат каретки перед закрывающим столбцом и теги ассоциации в файле DBML. Похоже, именно это вызывает ошибку на последнем шаге SQLMetal.exe.

<Column Name="SortOrder" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false">
</Column>

Я действительно могу открыть файл DataModel.dbml после шага 2 и заменить все в "\ r \ n " на "" и "\ r \ n " на "< / Ассоциация> ", а затем Шаг 3, кажется, работает. Очевидно, я не хочу делать это каждый раз, хотя.

Итак, что мне нужно сделать, чтобы запустить msxsl.exe, чтобы он не добавлял возврат каретки до закрывающих тегов Column и Association?

Команда msxls выглядит следующим образом:

"C:\VSBuild\msxsl.exe" "%~dp0DataModel.dbml" "%~dp0ModifyDbml.xslt" -o "%~dp0DataModel.dbml"

Имеет ли значение версия msxsl?

...