我正在尝试用xsd.exe从程序集生成某种类型的架构
下面是命令行:
xsd.exe TestAssemby.dll /t:TestType以下是我遇到的错误:
错误:处理'TestAssemby.dll‘时出错。无法加载一个或多个请求类型。检索LoaderExceptions属性以获取更多信息
我将引用的DLL文件复制到位于根据这个的文件夹中。
但我还是犯了同样的错误。
发布于 2013-10-09 11:39:52
我喜欢扩展用户74754的答案。这就是如何找出xsd.exe的问题所在。
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。
发布于 2012-04-11 17:55:58
我一直在努力解决这个问题,并且没有能够成功地让xsd.exe从DLL文件中的类、命令行、我的机器上生成一个模式。
最后,我设计了一个Windows VM来运行xsd.exe,它运行得很好,但它可能不是一个令人满意的答案。
无论出于什么原因,当我在Visual中创建一个新的控制台(或者可能是任何其他类型的)应用程序时,我能够添加对xsd.exe的引用并以编程的方式很好地引用它,如下所示:
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要容易得多。
我猜并不是每个人都有这个问题,因为我在网上发现的帮助信息不足。
发布于 2015-04-21 16:48:43
不要将DLL文件复制到其他位置,而是从生成的输出文件夹中运行xsd.exe。
xsd.exe "xsd myproject.dll /t:MyClass"https://stackoverflow.com/questions/3064366
复制相似问题