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

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

我有一个名为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替换为其他内容


此外,还需要将所有.xsd文件设置为“复制到输出目录”在它们的VS设置中。

您确实意识到,除非将它们复制到输出文件夹,否则它们在运行时将不可用,对吗?目录名无效。我收到错误消息。路径为E:\myfirstproject\myfirstproject\bin\Debug\myfirstproject.exe抱歉-使用System.IO.directory.GetFiles(System.IO.path.GetDirectoryName(Application.ExecutablePath),“*.xsd”))EnumerateFiles不是intellisense版本,我需要添加任何namespace@user2897388:如果未使用.NET4,则可以使用
GetFiles