在MSBUILD中,如何指定检查命令行或VS是否启动它的条件?

时间:2012-03-06 20:19:50

标签: msbuild

我有一个csproj,我想在Visual Studio中触发特定文件的打开,只有目标是在Visual Studio中执行,而不是从MSBUILD命令行执行。我该怎么做?

3 个答案:

答案 0 :(得分:34)

引自MSDN page

  

在Visual Studio中构建时,属性$(BuildingInsideVisualStudio)设置为true。这可以在您的项目或.targets文件中使用,以使构建行为不同。

示例如何在。* proj或.targets文件中使用它:

<PropertyGroup>
  <MyProperty Condition="'$(BuildingInsideVisualStudio)' == 'true'">This build is done by VS</MyProperty>
  <MyProperty Condition="'$(BuildingInsideVisualStudio)' != 'true'">This build is done from command line of by TFS</MyProperty>
</PropertyGroup>

答案 1 :(得分:2)

向.csproj项目文件添加属性,例如:

<PropertyGroup>
    <FromMSBuild>false</FromMSBuild>
</PropertyGroup>

然后在您要运行的任务中,添加一个评估该属性的条件。例如,如果你想从命令行而不是visual studio执行构建,你想打开notepad.exe:

  <Target Name="BeforeBuild">
<Exec Command="C:\Windows\Notepad.exe" Condition="$(FromMSBuild)" />
  </Target>

当然,这取决于通过命令行运行构建时正确设置$(FromMSBuild)属性,如下所示:

MSBuild myProject.csproj /p:FromMSBuild=true

答案 2 :(得分:0)

如果我理解正确,你想在Visual Studio中构建文件而不是从MSBuild命令行打开文件?

如果是这种情况,请在Visual Studio中指定PreBuild或PostBuild。

  1. 右键单击解决方案资源管理器中的项目,然后选择属性
  2. 选择事件标签
  3. 添加Pre或Post Build事件以打开所需文件