想象一下我有以下.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
文件的较大层次结构,这变得不可能而且非常繁琐。
我们有工具向我们展示吗?
答案 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>
然后,您可以构建您的项目,之后,它会在输出窗口中列出。
效果如下: