我想通过任何.net实体(而不是System.IO)获取项目及其路径中可用的所有resx文件的列表
当我用记事本打开csproj文件时,我可以看到一个反映项目树层次结构的xml包含所有resx文件 我可以在c#中传递这种数据可编程性吗?
答案 0 :(得分:0)
这取决于,如果您只想考虑项目中包含的resx
个文件,则必须解析csproj
个文件(基本上只有一个XML
文件)并遍历它们以检索resx
引用。
在这种情况下,只需加载解决方案文件夹中的所有csproj
:
var projectFiles = Directory.GetFiles(solutionDir,"*.*",SearchOption.AllDirectories).Where(f => Path.GetExtension(f) == ".csproj");
然后去进行残酷的解析。
如果您只想选择所有resx
个文件,而不考虑它们是否包含在项目中:
var resxFiles = Directory.GetFiles(solutionDir,"*.*",SearchOption.AllDirectories).Where(f => Path.GetExtension(f) == ".resx");
您还可以使用csproj
解析MSBuild API
个文件(需要引用Microsoft.Build.Engine
程序集):
Project project = new Project();
project.Load(projectFile);