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>
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>