【问题标题】:How to get changes in XSD file affect the related CS file?如何获取 XSD 文件中的更改会影响相关的 CS 文件?
【发布时间】:2012-06-15 03:35:13
【问题描述】:

我创建了一个 .xsd 文件,然后使用 XSD.exe 生成了 .cs 文件(我使用了 xsd.exe /dataset mySchema.xsd)。一切正常,但突然间,我需要在我的 xsd 中添加一个新字段。

我是否必须从项目中删除 .xsd 文件,使用 XSD.exe 生成新的 .cs 文件,然后再次添加它,或者当我更改为时,VS2010 是否有自动更新 .cs 的方法xsd 通过模式资源管理器?

谢谢!

【问题讨论】:

  • 这是 XSD2Code 可以做的许多事情之一。 xsd2code.codeplex.com
  • XSD2Code 是一个不错的应用程序,但我的代码已经在使用 xsd.exe 方法。现在将其全部更改以适应 xsd2code 将花费大量时间...

标签: c# xml xsd


【解决方案1】:

vs2010 项目的简单解决方案是将 mySchema.xsd 文件作为数据集包含到项目中。如果您通过代码或 xsd-editor 更改 xsd,如果数据集设置正确,vs2010 将重新生成重新生成 cs 数据集。

最简单的尝试方法是使用向导添加新数据集。

(请注意,我没有在 vs 2010 上尝试过,但它与 vs2002、vs2003、vs2005 和 vs2008 完美配合)

[更新] 如果设置了 xsd-file-property customtool = 'MSDataSetGenerator' ,它适用于 vs2010

【讨论】:

  • 我确实将 .xsd 和 .cs 文件添加到项目中,并且我猜它们已正确添加,因为 .cs 文件嵌套在 .xsd 文件下并且 .xsd 文件具有此数据集符号靠近它。我设法编辑 .xsd 文件的唯一方法是编辑其代码(例如,添加一个新标签 。我可以看到更改应用得很好到架构而不是 .cs 文件...
  • 天哪,太好了!但仍然存在一个小问题:生成的 .designer.cs 类名始终是“NewDataSet”,尽管我的 .xsd 文件名是其他名称。因为我有 10 个不同的 xsd 文件,所以它们都有相同的类名。你知道如何解决这个问题吗?无论如何,谢谢,我保证一旦达到 15 分就会给你评分(还不能提高评分...)。
  • 没关系,也解决了。刚刚在标题标签中添加了“id”属性,它解决了这个问题。再次感谢,我以前见过“自定义工具”属性。很好的帮助!
  • 小修正(编辑在 5 分钟后不起作用)。 id 已添加到架构标记中。当然,我的意思是我以前从未见过。
【解决方案2】:

我添加了一个 Pre-build 事件,其中包含如下一行:

"$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\@InstallationFolder)bin\NETFX 4.0 Tools\xsd.exe" "$(ProjectDir)MyFile.xsd"

每次构建项目(之前)都会生成一个 .cs 文件。这很麻烦,但它有效。如果我是对的,如果不对其进行任何更改,则不会重建该项目。

Xsd2Code 对我来说不是一个选择,因为我需要处理许多 xsd,而 xsd.exe 允许我这样做。但是,您最终会得到 1 个巨大的 .cs 文件,因此可能需要提取任何常见类型,以免它们被创建两次。

如果我不这样做,它会创建名称稍有不同的相同类型,例如“Signature”、“Signature1”、“Signature2”等...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多