MSBuildThisFileDirectory的价值是多少?

Mat*_*t W 10 target visual-studio nuget

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

\MySolution
  \MyProject
    ReadMe.md
    \build
      MyProject.targets
Run Code Online (Sandbox Code Playgroud)

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

假设我的解决方案文件夹位于C:驱动器的根目录下,它会是什么?

c:\MySolution\MyProject\build\
Run Code Online (Sandbox Code Playgroud)

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

附加信息:

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>
Run Code Online (Sandbox Code Playgroud)

Leo*_*SFT 5

MSBuildThisFileDirectory的价值是多少?

这取决于你的MyProject.targets.根据此变量的字面含义,您可以知道ThisFileDirectory"此文件目录".

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

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

c:\MySolution\packages\MyProject.1.0.0<YouPackagefolder>\build
Run Code Online (Sandbox Code Playgroud)

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

  <Target Name="TestValue" AfterTargets="build">
    <Message Text="@(none)">
    </Message>
  </Target>
Run Code Online (Sandbox Code Playgroud)