MSBuildThisFileDirectory 的值是多少?

What is the value of MSBuildThisFileDirectory?

如果我有这样的项目结构:

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

MyProject.targets 文件中使用时 $(MSBuildThisFileDirectory) 的值是多少?

假设我的解决方案文件夹在C盘的根目录下,会是吗?..

c:\MySolution\MyProject\build\

MyProject.targets 文件中,如何使用 $(MSBuildThisFileDirectory) 引用 ReadMe.md 文件?

附加信息:

MyProject.targets 看起来像:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <None Include="$(MSBuildThisFileDirectory)\xxx\ReadMe.md">
      <Link>FrameworkTests.feature</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CustomToolNamespace></CustomToolNamespace>
    </None>
  </ItemGroup>
</Project>

What is the value of MSBuildThisFileDirectory?

这取决于您的 MyProject.targets。根据这个变量的字面意思,可以知道ThisFileDirectory就是"This File Directory"。

由于您在文件 MyProject.targets 中使用了此参数,路径应该与 "this file" MyProject.targets 的位置相关。所以这个参数的值应该是这个文件的目录MyProject.targets.

安装nuget后,文件MyProject.targets应该添加到路径:

c:\MySolution\packages\MyProject.1.0.0<YouPackagefolder>\build

您可以使用目标在您的项目文件中输出该值,为此,请卸载您的项目。然后在项目的最后,就在结束标记 </project> 之前,将脚本放在下面:

  <Target Name="TestValue" AfterTargets="build">
    <Message Text="@(none)">
    </Message>
  </Target>