如何在.NET Core 2类库项目中用C#读取.csproj的PropertyGroup值
在.NET Core 2类库中读取.csproj的元素值
嘿,要在.NET Core 2类库项目里获取.csproj文件中
步骤说明:
添加NuGet包引用
因为.NET Core 2类库默认不会包含MSBuild相关的程序集,你需要先安装Microsoft.BuildNuGet包。可以通过NuGet包管理器或者命令行安装:Install-Package Microsoft.Build -Version 15.9.20(注:选择和你.NET Core 2版本兼容的包版本,15.x系列是适配.NET Core 2的稳定版本)
编写读取代码
用Microsoft.Build.Evaluation.Project类加载并解析.csproj文件,然后直接获取指定属性的值:using Microsoft.Build.Evaluation; using System.IO; public class CsprojReader { public string GetLocationValue(string csprojFilePath) { // 转换为绝对路径避免相对路径问题 string absolutePath = Path.GetFullPath(csprojFilePath); // 加载项目文件,using语句确保资源释放 using (Project project = new Project(absolutePath)) { // 直接通过属性名获取值,MSBuild会自动处理<PropertyGroup>的合并逻辑 return project.GetPropertyValue("Location"); } } }
关键细节:
Project类会完整解析整个.csproj的MSBuild结构,不管在哪个 节点下, GetPropertyValue都能正确拿到它的值(如果多个定义了同一个属性,会返回优先级最高的那个,符合MSBuild的默认规则)。 - 这个方案完全基于.NET Core原生API,没有任何.NET Framework的依赖,完美匹配你的需求。
内容的提问来源于stack exchange,提问作者walter_dl
相关产品推荐
相关产品推荐

