Visual studio 如何引用.targets中的解决方案文件夹?

Visual studio 如何引用.targets中的解决方案文件夹?,visual-studio,msbuild,Visual Studio,Msbuild,我有一个自定义工具,使用Visual Studio 2015中的.targets机制在某些文件类型上运行 项目存在于多个级别,我希望在将代码拉到任何驱动器/文件夹(包括TFS CI代理)时引用此工具 我尝试使用相对路径,但因为文件位于不同的级别,所以它不适用于所有项目 我尝试使用注册表设置和环境变量,但这对CI机器来说不是个好兆头,因为它可能每次都构建在不同的文件夹中 是否可以获取项目/文件所在的解决方案文件夹,然后我可以使用工具目录的相对路径 我所能找到的只是这些属性,它们似乎没有什么帮助:

我有一个自定义工具,使用Visual Studio 2015中的.targets机制在某些文件类型上运行

项目存在于多个级别,我希望在将代码拉到任何驱动器/文件夹(包括TFS CI代理)时引用此工具

我尝试使用相对路径,但因为文件位于不同的级别,所以它不适用于所有项目

我尝试使用注册表设置和环境变量,但这对CI机器来说不是个好兆头,因为它可能每次都构建在不同的文件夹中

是否可以获取项目/文件所在的解决方案文件夹,然后我可以使用工具目录的相对路径

我所能找到的只是这些属性,它们似乎没有什么帮助: 一般MSBuild属性:

注册表和环境变量:

您可以使用.targets中的所有标准令牌。 只用


请参见自助服务回答:在预处理器宏或包含路径等中使用visual studio的vcxproj属性编辑来查看一组可用变量。您通常可以通过名称或示例在其中找到您需要的内容,包括您在此处需要的内容。比任何文档都好。

我想我可能没有解释的是,在解决方案中,我有50个项目位于不同深度的文件夹结构中。如果遇到某些文件类型,我正在执行特定的工具。我通过在csproj文件中导入.targets文件来实现这一点。这将集中逻辑,但需要非项目相对路径。但是相对于$(SolutionDir)是可以的。你有你正在谈论的截图例子吗?我刚刚从VS2010跳到VS2015,所以可能错过了一个技巧。VS2010和VS2015之间的技巧没有区别。BuuuttTT看起来你可能需要创建一个C++项目来完成这个任务。正如我所说,vcxproj。右键单击项目属性、配置属性、链接器、常规。单击输出文件上的向下箭头,选择“编辑”。单击宏。键入您希望看到的路径示例,或在搜索筛选器框中猜测关键字;你也可以看到他们的评价。其中一些在c#中没有意义,但我认为SolutionDir有意义(我不确定,但你这么说)
$(SolutionDir)