web-dev-qa-db-fra.com

Quelle est la valeur de MSBuildThisFileDirectory?

Si j'ai une structure de projet comme celle-ci:

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

Quelle serait la valeur de $(MSBuildThisFileDirectory) lorsqu'elle serait utilisée dans le fichier MyProject.targets?

En supposant que mon dossier de solution se trouve à la racine du lecteur C:, serait-ce? ..

c:\MySolution\MyProject\build\

Dans le fichier MyProject.targets, Comment référencer le fichier ReadMe.md À l'aide de la fonction $(MSBuildThisFileDirectory)?

Information additionnelle:

MyProject.targets ressemble à:

<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

Quelle est la valeur de MSBuildThisFileDirectory?

Cela dépend de votre MyProject.targets. Selon la signification littérale de cette variable, vous pourriez savoir que ThisFileDirectory signifie "Ce répertoire de fichiers".

Puisque vous avez utilisé cet argument dans le fichier MyProject.targets, le chemin doit être lié à l'emplacement du "ce fichier" MyProject.targets. La valeur de cet argument doit donc être le répertoire de ce fichier MyProject.targets.

Après avoir installé le nuget, le fichier MyProject.targets doit être ajouté au chemin:

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

Vous pouvez utiliser une cible pour sortir cette valeur dans votre fichier de projet, pour ce faire, déchargez votre projet. Puis à la toute fin du projet, juste avant la balise de fin </project>, placez ci-dessous les scripts:

  <Target Name="TestValue" AfterTargets="build">
    <Message Text="@(none)">
    </Message>
  </Target>
5
Leo Liu-MSFT