C# 如何从.NET标准库中的类生成XML模式?
在过去,我一直使用xsd.exe从.NETFramework库中的类生成XML模式 现在,我想对.NET标准2.1库中的某些类执行相同的操作,但我得到了一个错误 运行C# 如何从.NET标准库中的类生成XML模式?,c#,xml,xsd.exe,.net-standard-2.1,C#,Xml,Xsd.exe,.net Standard 2.1,在过去,我一直使用xsd.exe从.NETFramework库中的类生成XML模式 现在,我想对.NET标准2.1库中的某些类执行相同的操作,但我得到了一个错误 运行 C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\xsd.exe $(BinDir)$(TargetName).dll /type:$(ItemFileName) 从Package Manager控制台,我可以看到: Microsof
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\xsd.exe $(BinDir)$(TargetName).dll /type:$(ItemFileName)
从Package Manager控制台,我可以看到:
Microsoft(R)Xml架构/数据类型支持实用程序[Microsoft(R)
.NET Framework,版本4.8.3928.0]版权所有(C)Microsoft
公司版权所有。错误:处理时出错
''
- 无法加载一个或多个请求的类型。有关详细信息,请检索LoaderExceptions属性
如果将类复制到.NETFramework项目中,我可能会工作,但这感觉很愚蠢。尽管如此,我还是可以回到这一点。为什么不在.NET旧项目中使用.NET标准库呢?这就是.NET标准的目的。创建可在项目之间共享的库。看起来真正的问题是.NET标准库太大了,它包含需要在项目之间共享的DTO和其他只与其中一个项目相关的内容。我怀疑真正的解决方案是将DTO提取到它们自己的库中,并在所有项目中使用。在任何情况下,
xsd.exe
都是一个遗留工具。2006年WCF问世时,它被svcutil
取代,使用了更好的序列化程序,并且与(当时新的)模式和互操作性标准的一致性更好。在.NET Core中,等效的工具是全局工具。为什么要使用xsd
而不是svcuti
svcutil
比xsd
更严格,因此如果您不能使用svcutil
生成模式,这意味着该类有问题,而不是工具,它使用了无法轻松转换的结构,如choice或匿名类型xsd
将通过使用像XmlItem
这样的泛型类型来解决这些问题,这使得生成的模式毫无用处。在这两种工具中,您都可以使用attributes@PanagiotisKanavos我不确定我是否正确理解你。NET旧项目本身不存在。你是说解决方案吗?我目前不在解决方案之间共享此代码。我认为实际的代码库不是问题所在,而是.NET framework和.NET标准程序集的结构之间的差异。@PanagiotisKanavos我没有使用svcutil
,因为我不知道它的存在。我试试看。谢谢