Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何告诉sharpdevelop运行xsd工具从.xsd生成.cs_C#_.net_Xml_Xsd_Sharpdevelop - Fatal编程技术网

C# 如何告诉sharpdevelop运行xsd工具从.xsd生成.cs

C# 如何告诉sharpdevelop运行xsd工具从.xsd生成.cs,c#,.net,xml,xsd,sharpdevelop,C#,.net,Xml,Xsd,Sharpdevelop,我正试图让sharpdevelop从我的.xsd生成一个.cs文件。我尝试过在解决方案的预构建事件命令行中添加一个条目,但没有效果,甚至没有输出。所以我试着添加一个简单的 echo "Hello World!!!" 只是为了确保它能正常工作。这也没有效果,表明没有调用预构建事件 我还尝试在.xsd文件的属性中为其指定一个自定义工具。这导致了“找不到自定义工具”错误,无论我在“自定义工具”属性中输入了什么。以下是我如何使用xsd.exe在SharpDevelop 4.4中使用预生成事件生成C文件

我正试图让sharpdevelop从我的.xsd生成一个.cs文件。我尝试过在解决方案的预构建事件命令行中添加一个条目,但没有效果,甚至没有输出。所以我试着添加一个简单的

echo "Hello World!!!"
只是为了确保它能正常工作。这也没有效果,表明没有调用预构建事件


我还尝试在.xsd文件的属性中为其指定一个自定义工具。这导致了“找不到自定义工具”错误,无论我在“自定义工具”属性中输入了什么。

以下是我如何使用xsd.exe在SharpDevelop 4.4中使用预生成事件生成C文件的

确保xsd.exe位于您的路径上。如果配置了此选项,则应该能够从命令行运行xsd.exe,而无需指定其完整路径

在SharpDevelop中打开项目后,从项目菜单中选择项目选项。然后选择buildevents选项卡

在预生成事件命令行文本框中添加以下内容:

xsd $(ProjectDir)myschema.xsd /c /out:$(ProjectDir)
这假设您的项目目录中有一个名为myschema.xsd的XML模式

现在构建项目

在编译项目的其余部分并在项目目录中生成C文件之前,构建项目将运行xsd。生成此文件后,可以将C文件添加到项目中,并编写使用此文件中的类的代码。因此,您可以修改模式,并将生成一个新的C文件

为了在预生成事件中查看echo语句,需要提高MSBuild日志记录级别。默认情况下,SharpDevelop显示MSBuild的最小输出

要查看echo语句,请从“工具”菜单中选择“选项”。在“常规”类别中,选择项目和解决方案。然后在下拉列表中将生成详细信息更改为诊断。然后,当您使用SharpDevelop构建时,您将看到许多MSBuild输出,但如果您搜索文本,您将在输出中找到它:

Target "PreBuildEvent" in file     "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets":
  Using "Exec" task from assembly "Microsoft.Build.Tasks.v4.0, Version=4.0.0.0,     Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
  Task "Exec"
    echo 'Hello world'
    'Hello world'
  Done executing task "Exec".

预构建事件是您的最佳选择。SharpDevelop中没有自定义工具可用于使用xsd.exe从架构生成C文件。生成时,输出中是否有错误?如果看不到任何事情发生,也可以尝试从命令行构建。在命令行运行xsd命令可以得到预期的结果。我不认为sharpdevelop实际上运行预构建事件。我用一个从未被调用的简单echo语句进行了测试。