2021-05-21 乐帮网
c# visual studio
开发Visaul Studio插件时常常会对EnvDTE.Project做一些操作,其中就包含判断项目的类型以及所有框架的版本,那么有没有办法判断当前项目是.net Framework 还是.net Core项目?
从网上找到的方法是使用 Project.Kind
C# .NET Project: {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
C# dotnet Core Project: {9A19103F-16F7-4668-BE54-9A1E7A4F7556}
但是这个方法在有了dotnet core 3.0后就不再有效了。我想到了另一种代替方案如下:
public static readonly string[] APPLYSDK = { "Microsoft.NET.Sdk.Web","Microsoft.NET.Sdk","Microsoft.NET.Sdk.Razor" };
public static bool CheckSdk(EnvDTE.Project project)
{
 XmlDocument xmlDoc = new XmlDocument();
 xmlDoc.Load(project.FullName);
 XmlElement xmlRoot = xmlDoc.DocumentElement;
            if (xmlRoot.HasAttributes)
            {
                var sdkNode = xmlRoot.Attributes.GetNamedItem("Sdk");
                if (sdkNode != null)
                {
                    if (APPLYSDK.Contains(sdkNode.Value))
                    {
                        return true;
                    }
                }
            }
   return false;
}
核心原理就是通过项目的配置文件读取主要信息从而判断 它的类型,同时我们也可以把它的版本信息解析出来。
 private static string GetVersion(XmlDocument xmlDoc)
        {
            
            XmlElement xmlRoot = xmlDoc.DocumentElement;
            foreach(XmlNode node in xmlRoot.ChildNodes)
            {
                if (node.Name.Equals("PropertyGroup"))
                {
                    foreach(XmlNode property in node.ChildNodes)
                    {
                        if (property.Name.Equals("TargetFramework"))
                        {
                            return property.InnerText;
                        }
                    }
                }
            }
            return string.Empty;
        }
希望能帮助到你。lebang2020.cn
                        
                                关注我的微信公众号
                                在公众号里留言交流
                                投稿邮箱:1052839972@qq.com
                            
                        庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
                        雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。
                        
                    
                        
                                如果感觉对您有帮助
                                欢迎向作者提供捐赠
                                这将是创作的最大动力