问题-我们可以通过某种方式解析csproj文件,但是大多数信息不在文件中,而是默认情况下或受其他属性影响。
我想处理csproj文件和解决方案-获取项目依赖项,获取属性和项(例如“ TargetFramework”,已编译文件等)。
TargetFramework可以是带有值的标签,也可以是具有解析为“ TargetFramework”的多值的“ TargetFramework s ”标签。
旧的解决方案-MSBuild提供了microsoft.build.evaluation library来与csproj文件一起使用,但是该库已编译为net471,在netcoreapp中使用该库时会导致错误。
.net核心项目中问题的解决方案是什么?
答案 0 :(得分:2)
对于 .Net Core Microsoft.Build
NuGet 包的工作方式如下:
var projectRootElement = ProjectRootElement.Open(csprojPath);
projectRootElement.AddProperty("Version", "3.4.5");
projectRootElement.Save();
如果版本存在,它会覆盖它。如果不存在,则添加新的属性名称为“Version”,值为“3.4.5”。
您还可以获取所有在 .csproj
var projectRootElement = ProjectRootElement.Open(csprojPath);
foreach (var property in projectRootElement.Properties)
{
Console.WriteLine($"Name: {property.Name} - Value: {property.Value}");
}
在 .NetCore 5.0 中测试