首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用xsd.exe生成模式

用xsd.exe生成模式
EN

Stack Overflow用户
提问于 2010-06-17 18:14:23
回答 4查看 3.1K关注 0票数 10

我正在尝试用xsd.exe从程序集生成某种类型的架构

下面是命令行:

代码语言:javascript
复制
xsd.exe TestAssemby.dll /t:TestType

以下是我遇到的错误:

错误:处理'TestAssemby.dll‘时出错。无法加载一个或多个请求类型。检索LoaderExceptions属性以获取更多信息

我将引用的DLL文件复制到位于根据这个的文件夹中。

但我还是犯了同样的错误。

  • 造成这种错误的可能原因是什么?
  • 如何使用LoaderExceptions属性?(举个例子会很有帮助。)
EN

回答 4

Stack Overflow用户

发布于 2013-10-09 11:39:52

我喜欢扩展用户74754的答案。这就是如何找出xsd.exe的问题所在。

代码语言:javascript
复制
static void Main(string[] args)
{
    var rgs = new string[]
    {
        @"{path_to_dll}",
        "/type:{type_name}"
    };

    AppDomain.CurrentDomain.FirstChanceException += (s, e) =>
    {
        string error = e.Exception.ToString();

        var typeLoadException = e.Exception as ReflectionTypeLoadException;

        if (typeLoadException != null)
        {
            foreach (var exception in typeLoadException.LoaderExceptions)
            {
                error += Environment.NewLine + Environment.NewLine +
                         exception.ToString();
            }
        }

        Console.WriteLine(error);
    };

    XsdTool.Xsd.Main(rgs);

    Console.ReadLine();
}

因此,诀窍是将XSD.exe作为您自己的测试应用程序的一部分运行,并在调用XsdTool.Xsd之前注册一个XsdTool.Xsd

票数 3
EN

Stack Overflow用户

发布于 2012-04-11 17:55:58

我一直在努力解决这个问题,并且没有能够成功地让xsd.exe从DLL文件中的类、命令行、我的机器上生成一个模式。

最后,我设计了一个Windows VM来运行xsd.exe,它运行得很好,但它可能不是一个令人满意的答案。

无论出于什么原因,当我在Visual中创建一个新的控制台(或者可能是任何其他类型的)应用程序时,我能够添加对xsd.exe的引用并以编程的方式很好地引用它,如下所示:

代码语言:javascript
复制
namespace XsdExeTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var rgs = new string[]
                          {
                              @"C:\publish\bin\SoAndSo.Library.dll",
                              "/type:SoAndSoNamespace.SoAndSoClassName"
                          };

            XsdTool.Xsd.Main(rgs);
        }
    }
}

。。。我得到了输出:

写入文件模式0.xsd

这是一个有点奇怪的解决办法,但如果您还没有现成的VM,那么它要比编写VM要容易得多。

我猜并不是每个人都有这个问题,因为我在网上发现的帮助信息不足。

票数 2
EN

Stack Overflow用户

发布于 2015-04-21 16:48:43

不要将DLL文件复制到其他位置,而是从生成的输出文件夹中运行xsd.exe。

  1. 启动developer命令提示符。
  2. 切换到输出文件夹"cd c:\myproject\bin“
  3. 运行xsd.exe "xsd myproject.dll /t:MyClass"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3064366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档