0

我刚刚从 VS 2015 升级到 VS 2019(以及 Windows 7 到 Windows 10)。我的项目是在批处理文件中使用 SQLMetal.exe 和 msxsl.exe分三个步骤创建和修改 DBML:

  1. 使用 SQLMetal.exe 生成 DataModel.dbml 文件。
  2. 使用 msxsl.exe 添加数据库转换。
  3. 使用 SQLMetal.exe 生成 DataModel.cs 文件。

当我在新环境中运行它时,它给了我一个奇怪的错误:

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>

我实际上可以在第 2 步之后打开 DataModel.dbml 文件,并将 "\r\n < /Column>" 上的所有内容替换为 "< /Column>" 和 "\r\n< /Assocation>" 到 "< /Association> ",然后第 3 步似乎有效。显然,我不想每次都这样做。

那么,我需要做什么才能运行 msxsl.exe 并且不让它在结束 Column 和 Association 标签之前添加回车符?

msxls 命令如下:

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

msxsl 的版本是否重要?

4

0 回答 0