VS 2022 C#项目升级.NET 5后$(TargetPath)宏不可用的替代方案咨询
解决方案:SDK风格csproj中$(TargetPath)的替代方案
在从.NET Framework的旧式csproj迁移到.NET 5+的SDK风格csproj后,部分旧MSBuild宏的赋值逻辑会发生变化,$(TargetPath)失效是典型的适配问题,可直接使用以下替代组合:
- 首选完全等效替代:
$(TargetDir)$(TargetFileName)
两个宏在SDK风格项目中均稳定可用,拼接后与原$(TargetPath)的输出完全一致,即生成主文件的完整绝对路径。 - 适配自定义配置的备选方案:
$(OutputPath)$(AssemblyName)$(TargetExt)
如果你修改过项目的默认程序集名、输出路径规则,该组合兼容性更强,各部分含义如下:$(OutputPath):项目配置的输出目录相对/绝对路径$(AssemblyName):项目的程序集名称$(TargetExt):输出文件的扩展名(.dll/.exe等)
验证方法
你可以在后期生成事件中加入临时调试命令,确认路径是否符合预期:
echo 生成文件路径:$(TargetDir)$(TargetFileName) pause
编译项目后即可直接打印出拼接后的完整路径,确认无误后再删除调试命令即可。
注意事项
如果替换后仍出现路径错误,可检查项目属性「生成」页的输出路径配置,确认SDK风格项目的输出路径规则与原有.NET Framework项目的配置对齐。
内容的提问来源于stack exchange,提问作者Michael T
相关产品推荐
相关产品推荐

