You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MSBuild:如何在Directory.Build.props中获取项目SDK版本(TargetFramework)

解决自定义OutDir时包含TargetFramework的问题

直接在OutDir属性中引入$(TargetFramework)变量即可,但需注意Directory.Build.props的加载时机——它默认在项目自身属性之前执行,此时$(TargetFramework)可能还未被SDK初始化完成,因此有两种稳妥的实现方式:

方案1:改用Directory.Build.targets

将OutDir配置移至Directory.Build.targets文件(该文件在项目属性加载完成后执行,能确保$(TargetFramework)已被正确赋值):

<Project>
    <PropertyGroup>
        <OutDir>$(SolutionDir)/builds/$(MSBuildProjectName)/bin/$(Configuration)/$(TargetFramework)/</OutDir>
    </PropertyGroup>
</Project>

方案2:在Directory.Build.props中延迟求值

通过MSBuild的延迟语法,确保$(TargetFramework)已初始化后再拼接路径:

<Project>
    <PropertyGroup>
        <OutDir>$(SolutionDir)/builds/$(MSBuildProjectName)/bin/$(Configuration)/$([MSBuild]::EnsureTrailingSlash('$(TargetFramework)'))</OutDir>
    </PropertyGroup>
</Project>

效果验证

配置完成后,输出目录会自动包含TargetFramework版本,最终路径与预期一致:

solution/builds/proj/bin/Debug/net8.0/

内容的提问来源于stack exchange,提问作者dev01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:25:07