我们需要从类库项目的csproj文件中获取Main可执行程序集的TargetFramework。这是为了使类库可以针对net7.0-android。下面的代码失败,因为XmlDocument不能在MSBuild属性函数中执行。
我们如何才能实现我们正在努力做的事情?
<PropertyGroup>
<MainExecutableTargetFramework>$([System.Xml.XmlDocument]::new().Load("$($(MSBuildStartupDirectory))/$(AssemblyName).csproj").SelectSingleNode("/Project/PropertyGroup/TargetFramework").InnerText)</MainExecutableTargetFramework>
</PropertyGroup>
<PropertyGroup Condition=" '$(MainExecutableTargetFramework)' == 'net7.0-android' ">
<TargetFrameworks>net7.0-android</TargetFrameworks>
</PropertyGroup>
1条答案
按热度按时间dauxcl2d1#
正如乔纳森提到的,你在你的财产中没有使用:
属性函数语法
只有这些类别:
1、String(示例)属性函数
2、静态属性函数
3、MSBuild属性函数
看看静态属性函数,你会发现只有下面的是允许的:
1、这些系统类的公共静态方法或属性:
2、静态方法和属性:
因此System.xml.XmlDocument不能在属性中使用。
这是一个处理XML文档的方法,你可以看看这个:
Read launchSettings.json values from MSBuild?