web-dev-qa-db-ja.com

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>
_
9
Matt W

MSBuildThisFileDirectoryの価値は何ですか?

それはあなたのMyProject.targets。この変数の文字通りの意味によると、ThisFileDirectoryが「このファイルディレクトリ」を意味することがわかります。

ファイルでこの引数を使用しているので、MyProject.targets、パスは「このファイル」の場所に関連する必要があります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>
5
Leo Liu-MSFT