我有一个名为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文件设置为"复制到输出目录"。