如何获取.sln-或.csprojfile名称并将其用作条件?

时间:2017-12-13 17:22:52

标签: visual-studio msbuild

我正在处理几个不同的.sln文件(在iOS中连接到他们自己的.csproj文件),具体取决于我想在Visual Studio的解决方案中运行的项目。为了处理不同的项目,我需要一种方法来了解.sln(或.c​​sproj)文件当前是什么"运行"。

目前我的项目已填充Condition s:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugAppNameOne|iPhone' ">

我想要做的是替换Condition而不是以某种方式取出正在运行的.sln或.csproj文件的名称。我的问题是,这是可能的,如果是这样,我怎么能得到他们的名字?我在思考的是这些方面:

的.sln:

<PropertyGroup Condition=" ’$(TheSlnName)|' == 'SolutionName.AppNameOne.sln'">

的.csproj:

<PropertyGroup Condition=" ’$(TheCsProjName)|' == 'SolutionName.iOS.AppNameOne.csproj'">

1 个答案:

答案 0 :(得分:1)

对于.sln个文件,您可以使用以下msbuild宏来确定您已打开的解决方案:

$(SolutionFileName): MySolution.sln
$(SolutionPath): D:\MyProjects\MySolution.sln
$(SolutionDir): D:\MyProjects\
$(SolutionName): MySolution

你应该可以使用:

<PropertyGroup Condition=" '$(SolutionFileName)' == 'SolutionName.AppNameOne.sln'">

对于.csproj个文件,您可以使用以下宏:

$(ProjectFileName): MyLogic.csproj
$(ProjectPath): D:\MyProjects\MyLogic\MyLogic.csproj
$(ProjectDir): D:\MyProjects\MyLogic\
$(ProjectName): MyLogic

你应该可以使用:

<PropertyGroup Condition=" '$(ProjectFileName)' == 'SolutionName.iOS.AppNameOne.csproj' ">

您可以通过查看项目属性,选择Build Events选项卡,然后单击“Edit Pre-Build ...”或“Edit Post-Build ...”来查看项目可用的MSBuild宏。在出现的窗口中,选择“宏&gt;&gt;”按钮,您将能够看到您可以使用的相关MSBuild宏信息以及它将评估的内容。

您还可以查看MSBuild宏documentation here