我有一个由不同路径的不同项目组成的解决方案。我们使用vanilla文件夹中的基础项目,然后从特定目录项目特定的项目。例如:在VS发布配置文件中获取解决方案目录
specific project directory: c:\proj\specific
vanilla project directory: c:\proj\vanilla
vanilla project x path: c:\proj\vanilla\repo\src\project\x\code\
在我们发布配置文件指向的根目录,包括有实际的目标在项目应公布一个publishsettings.targets文件中的每个项目的香草。通过使用这种结构,我们可以制作大量项目并使用单个目标发布它们,因此我们无需在所有项目中更改该目标。
我们现在发现使用这些vanilla项目时出现问题,因为发布配置文件中使用的路径与vanilla目录相关,实际上我们需要它与相关的特定项目目录(解决方案目录)相关。
在我们发布配置有:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\..\..\..\publishsettings.targets" />
<PropertyGroup>
...
</PropertyGroup>
</Project>
所以我们需要一种方法来指定实际SLN目录这条道路,所以我们可以有正确的目标,所以当我们做从Visual Studio它将发布发布到特定的项目,而不是一个。
我试图找到一个“MSBuildSolutionDirectory”,但它似乎只是一个“MSBuildProjectDirectory”变量,可以使用。
有谁知道一种方法,我可以通过使用一些的MSBuild或自定义变量,而不是硬编码获取路径
Project="c:\proj\vanilla\publishsettings.targets"
实际上是
Project="c:\proj\specific\publishsettings.targets"
?
我需要它与香草(因为我有一个vanilla.sln)和特定的项目(因为我有一个X.sln)工作。
我可以从您的评论看,它搜索的目录和我说具体SLN不与香草项目相同的目录路径所以它永远不会发现由于* .sln文件该文件位于c:\ proj \ specific \ specific.sln中,而vanilla项目位于c:\ proj \ vanilla \中,因此不确定该解决方案是否有帮助。 –
vanilla.sln和X.sln的路径是什么?我假设你注意到上面的功能搜索,而不是内部的项目目录,并且旨在让你得到解决方案目录(你的问题说你希望使用)。 – weir