Visual studio Visual Studio 2013和MSBuild命令行开关

Visual studio Visual Studio 2013和MSBuild命令行开关,visual-studio,msbuild,Visual Studio,Msbuild,是否有一种方法可以在Visual Studio 2013中指定msbuild开关,如/p:option=value?形式化我上面的注释 一种可能的解决方案是使用一个目标文件(例如,VisualStudioOverrides.targets),该文件定义要覆盖的属性及其值。然后,如果该文件存在,则csproj文件将导入该文件,从而覆盖相关属性。 这样的导入语句应该放在csproj文件的底部(在定义了要重写的属性之后),看起来像: <Import Project="$(MSBuildProje

是否有一种方法可以在Visual Studio 2013中指定msbuild开关,如/p:option=value?

形式化我上面的注释

一种可能的解决方案是使用一个目标文件(例如,
VisualStudioOverrides.targets
),该文件定义要覆盖的属性及其值。然后,如果该文件存在,则csproj文件将导入该文件,从而覆盖相关属性。 这样的导入语句应该放在csproj文件的底部(在定义了要重写的属性之后),看起来像:

<Import Project="$(MSBuildProjectDirectory)\VisualStudioOverrides.targets" Condition="Exists('$(MSBuildProjectDirectory)\VisualStudioOverrides.targets')" />


Visual Studio不运行
MSBuild.exe
,因此无法以这种方式传递开关。不过,通过直接编辑MSBuild项目文件,您可能可以获得所需的结果。这有点含糊不清。如果您确切地指定了哪些开关(编译器选项?其他生成选项?自定义变量定义?),可能会有一个合适的答案。我的项目文件中有一个属性,我打算用开关传递的值覆盖它/p:。。。或者类似的东西。无法更改项目文件。是否可以向项目文件添加挂钩?我想到的是导入一个目标文件,以防它存在。然后,此目标文件将重新定义要覆盖其值的属性。@AmnonShochot是的,应该是这样的,可能会将其作为答案发布?Msbuild有两个这样的钩子,但没有一个(afaik)是特定于项目的。有一个重要的前/导入机制,对于C++项目,有$(UsRooToDIR)\微软.CP..$(Stutal.Us.PrpS)。