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

在MSBUILD中,如何指定检查是命令行还是VS启动它的条件?,msbuild,Msbuild,我有一个csproj,我希望它能够在Visual Studio中触发特定文件的打开,前提是目标是从Visual Studio中执行的,而不是从MSBUILD命令行执行的。如何执行此操作?如果我理解正确,您希望在visual studio中生成文件时打开文件,而不是使用MSBuild从命令行打开文件 如果是这种情况,请在Visual Studio中指定预生成或后生成 在解决方案资源管理器中的项目上单击鼠标右键,然后选择“属性” 选择事件选项卡 添加生成前或生成后事件以打开所需文件 向.csproj

我有一个csproj,我希望它能够在Visual Studio中触发特定文件的打开,前提是目标是从Visual Studio中执行的,而不是从MSBUILD命令行执行的。如何执行此操作?

如果我理解正确,您希望在visual studio中生成文件时打开文件,而不是使用MSBuild从命令行打开文件

如果是这种情况,请在Visual Studio中指定预生成或后生成

在解决方案资源管理器中的项目上单击鼠标右键,然后选择“属性” 选择事件选项卡 添加生成前或生成后事件以打开所需文件
向.csproj项目文件添加属性,例如:

<PropertyGroup>
    <FromMSBuild>false</FromMSBuild>
</PropertyGroup>
引自:

在Visual Studio内部生成时,属性$BuildingSideVisualStudio设置为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>

否-我有一个csproj,其中包含自定义msbuild目标。当我在VisualStudio中单击build时,我希望它会导致在目标中发生特殊操作。。。类似于Condition=StartedInVS。当我从命令链接ie msbuild运行它时。。。我希望这个条件失败。那么,MSBUILD如何在目标中检测目标的名称呢?很抱歉,你说得对。我之前的回答是错误的,构建事件将被执行。我添加了另一个答案,解释了如何实现您的目标,这次我测试了它以确保。新MSDN页面:谢谢!更新了断开的链接。
MSBuild myProject.csproj /p:FromMSBuild=true
<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>