如何在Visual Studio中找到包含文件的路径链?

时间:2020-05-12 10:30:06

标签: msbuild visual-studio-2019

想象一下我有以下.targets文件:

  • Base.targets

  • Api.targets

  • GameApi.targets

这是它们的内容:

基本目标

<Project>

  <ItemGroup>
    <None Include="C:\Base\Database\Optimize.sql">
      <Link>Database\Optimize.sql</Link>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>

</Project>

Api.targets

<Project>

  <ItemGroup>
    <None Include="C:\Api\Database\Api.sql">
      <Link>Database\Api.js</Link>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>

  <Import Project="C:\Base\Base.targets" />

</Project>

GameApi.targets

<Project>

  <ItemGroup>
    <None Include="C:\GameApi\Database\GameApi.sql">
      <Link>Database\GameApi.js</Link>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>

  <Import Project="C:\Api\Api.targets" />

</Project>

实际上,我们有一个简单的包含.targets文件的包含链。现在,当我将GameApi.targets导入到项目中时,我看到文件被添加为该项目的链接。

如果我想知道每个文件的包含源,则需要手动打开每个目标文件并找出包含该文件的行。

对于.targets文件的较大层次结构,这变得不可能而且非常繁琐。

我们有工具向我们展示吗?

1 个答案:

答案 0 :(得分:1)

如果我想知道每个文件的包含来源,我需要 手动打开每个目标文件并找出该文件所在的行 对于较大的.targets文件层次结构 不可能而且非常乏味。

尝试创建自定义目标以显示项目文件的路径,您可以尝试以下操作:

解决方案

1)将它们添加到项目的xxx.csproj文件中:

<Target Name="Show_Path" AfterTargets="Build">
        <Message Importance="high" Text="$([System.IO.Path]::GetFullPath('%(None.Identity)'))"></Message>
</Target>

如果您想查看Content节点或Compile节点等,也可以添加它们:

 <Target Name="Show_Path" AfterTargets="Build">

    <Message Importance="high" Text="$([System.IO.Path]::GetFullPath('%(None.Identity)'))"></Message>
    <Message Importance="high" Text="$([System.IO.Path]::GetFullPath('%(Content.Identity)'))"></Message>
    <Message Importance="high" Text="$([System.IO.Path]::GetFullPath('%(Compile.Identity)'))"></Message>         

 </Target>

然后,您可以构建您的项目,之后,它会在输出窗口中列出。

效果如下

enter image description here