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

MSBuildThisFileDirectory取值及特定项目下文件引用方法咨询

MSBuildThisFileDirectory 相关问题解答

1. MSBuildThisFileDirectory 的值是什么?

这是MSBuild的内置保留属性,它会返回当前正在执行的MSBuild脚本文件(比如.targets、.props这类配置文件)所在目录的完整绝对路径,而且这个路径的末尾会自动包含一个反斜杠(\),不用手动添加。

2. 指定项目结构下,$(MSBuildThisFileDirectory) 的值是否为 c:\MySolution\MyProject\build\?

先看你给出的项目结构:

\MySolution
  \MyProject
    ReadMe.md
    \build
      MyProject.targets

假设解决方案根目录是C:\MySolution,那么在MyProject.targets里使用$(MSBuildThisFileDirectory)时,它的值确实就是C:\MySolution\MyProject\build\。因为这个属性的核心逻辑就是精准指向当前运行的MSBuild文件所在的目录,这里.targets文件在build子文件夹里,所以路径完全匹配。

3. 如何在 MyProject.targets 中通过 $(MSBuildThisFileDirectory) 引用 ReadMe.md?

$(MSBuildThisFileDirectory)指向的是build目录,而ReadMe.md在build的上级目录(MyProject目录),所以只需要通过相对路径向上跳转一级即可,这里有两种常用写法:

  • 简洁的相对路径拼接:
    <ItemGroup>
      <Content Include="$(MSBuildThisFileDirectory)..\ReadMe.md" />
    </ItemGroup>
    
  • 更严谨的路径组合(适合跨平台场景,自动处理路径分隔符):
    <ItemGroup>
      <Content Include="$([System.IO.Path]::Combine($(MSBuildThisFileDirectory), '..\ReadMe.md'))" />
    </ItemGroup>
    

两种方式都能正确定位到目标文件,日常使用前者足够,跨平台项目更推荐后者。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:01:03