如何从项目中获取扩展名为os.xsd的文件名



我有一个名为myfirstproject的项目。在这方面,我有.cs文件.xsd文件.rpt文件和.config文件等。这里我需要获得.xsd文件的文件名,如果是example.xsd,我需要在一个数据表中获得示例文件名。就像所有.xsd文件名都应该填写在一个数据表中一样。项目存在于该驱动器中的任何C、D或E驱动器中myfirstproject是解决方案名称和项目名称。在这方面,我需要获得扩展名为.xsd的文件名。我正在使用windows应用程序。请帮我提建议或解决方案提前感谢。

也许这有帮助:

var root =  new DirectoryInfo(Path.GetDirectoryName(Application.ExecutablePath)).Parent.Parent;
var allXsdFiles = root.EnumerateFiles(".xsd", SearchOption.AllDirectories);
DataTable tblFiles = new DataTable();
tblFiles.Columns.Add("Filename");
tblFiles.Columns.Add("Directory");
foreach (FileInfo xsd in allXsdFiles)
    tblFiles.Rows.Add(xsd.Name, xsd.Directory);

也许你需要摆弄根文件夹。我已经使用Application.ExecutablePath来获取bin文件夹。通常情况下,您的项目路径是两个父级以上。

您可以使用许多不同的方法从磁盘检索文件。System.IO命名空间包含许多对您有用的帮助程序类。

通常你不想直接从解决方案目录中读取(你会从可执行目录中读取文件,相对于可执行目录,或者从配置文件中配置的目录中读取。许多方法也取决于你是使用winforms还是webforms。

下面的代码不是我在生产系统中使用的,但对于winforms应用程序,它将扫描可执行目录,提取每个.xsd文件并将其写入控制台:

foreach (var file in System.IO.Directory.GetFiles(Application.ExecutablePath, "*.xsd")) {
    System.Diagnostics.Debug.WriteLine(file);
}

Webforms/MVC需要将Application.ExecutablePath换成其他内容。

此外,您还需要在VS设置中将所有.xsd文件设置为"复制到输出目录"。