csharp 解析CsProj

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 解析CsProj相关的知识,希望对你有一定的参考价值。

   public object ParseCSPROJ(string content)
        {
            object returnCSProj = null;
            TextReader textReader = new StringReader(content);

            if(content.Contains("MonoAndroidAssetsPrefix"))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(CsProjAndroidSample));
                returnCSProj = (CsProjAndroidSample)serializer.Deserialize(textReader);
            }

            else if(content.Contains("JavaOptions"))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(CsProjAndroid));
                returnCSProj = (CsProjAndroid)serializer.Deserialize(textReader);
            }

            else if(content.Contains("?xml version") && content.Contains("Project Sdk"))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(CsProjCoreVersionOne));
                returnCSProj = (CsProjCoreVersionOne)serializer.Deserialize(textReader);
            }

            else if(content.Contains("?xml version"))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(CsProjClassic));
                returnCSProj = (CsProjClassic)serializer.Deserialize(textReader);
            }
            else if(content.Contains("Project Sdk"))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(CsProjCORE));
                returnCSProj = (CsProjCORE)serializer.Deserialize(textReader);
            }
            else if(content.StartsWith("<Project DefaultTargets=\"Build\""))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(CsProjUnknown));
                returnCSProj = (CsProjUnknown)serializer.Deserialize(textReader);
            }

            else if(content.StartsWith("<Project ToolsVersion"))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(CsProjToolVersion));
                returnCSProj = (CsProjToolVersion)serializer.Deserialize(textReader);
            }

            else if(content.Contains("you do not have permission to access it")) throw new Exception("Nemam prava pristupa projektu");

            else if(content.Contains("InvalidPathException")) throw new Exception("Greška kod putanje, projekti su smješteni na lokalnom disku i nije im moguće pristupiti! ");

            else if(returnCSProj == null) throw new Exception("Nisam našao dobar parser za CSProj");

            return returnCSProj;
        }

以上是关于csharp 解析CsProj的主要内容,如果未能解决你的问题,请参考以下文章

全面解析Unity3D自动生成的脚本工程文件

错误:*.csproj 无法在 MonoDevelop 上导入“$(MSBuildBinPath)\Microsoft.CSharp.targets”

csharp 用于从csproj unity 2018中排除着色器文件的后处理器生成

.props 文件中的 C# 参考

csharp 注销应用程序用户数据解析脚本

csharp #JSON解析器MBAD MPBA