我有一个csproj,我想在Visual Studio中触发特定文件的打开,只有目标是在Visual Studio中执行,而不是从MSBUILD命令行执行。我该怎么做?
答案 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。