Visual studio 2015 如何在不写入.csproj文件的情况下从VSIX设置自定义MsBuild属性?

Visual studio 2015 如何在不写入.csproj文件的情况下从VSIX设置自定义MsBuild属性?,visual-studio-2015,msbuild,vsix,csproj,envdte,Visual Studio 2015,Msbuild,Vsix,Csproj,Envdte,我为VisualStudio创建了一个VSIX扩展,它添加了一个自定义下拉菜单。我需要此菜单中的值应用于文件的.csproj属性,而不更改文件本身,如配置菜单。例如: <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> </PropertyGroup> <PropertyGroup Condition=" '

我为VisualStudio创建了一个VSIX扩展,它添加了一个自定义下拉菜单。我需要此菜单中的值应用于文件的.csproj属性,而不更改文件本身,如配置菜单。例如:

<PropertyGroup>
  <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
  <DefineConstants>DEBUG;TRACE;</DefineConstants>
</PropertyGroup>

调试
调试;查出
--.csproj的默认内容。当我从Visual Studio配置下拉菜单中选择“调试”时,配置属性值将切换到调试,而不更改.csproj文件和激活代码文件中的“#if Debug”-块

我在解决方案中有多个项目,每个项目都有这个属性。 如果我覆盖.csproj,那么这些更改将由源代码管理监控,我不希望这样。 请帮忙

如何在不写入.csproj文件的情况下设置自定义MsBuild属性

如果自定义MSBuild属性是项目文件中的PropertyGroup,则可以通过MSBuild命令行调用MSBuild将参数传递到项目文件中:

<PropertyGroup>
  <CustomTestName>TestValue1</CustomTestName>
</PropertyGroup>
msbuild /p:CustaomTestName=TestValue2
或者,您可以使用自定义属性中的选项“
条件”
,如项目文件中的
[Debug/Release]

<PropertyGroup>
  <CustomTestName>TestValue</CustomTestName>
</PropertyGroup>

<Target Name="CheckPropertiesHaveBeenSet">
  <Error Condition="'$(CustomTestName )'=='CustomTestNameNotSet'" Text="Something has gone wrong.. Custom Test Name not entered"/>
  <PropertyGroup>
    <CustomTestName Condition="'$(CustomTestName)'=='ChangeTestValue'">ChangeTestValue</CustomTestName >
  </PropertyGroup>
</Target>

测试值
ChangeTestValue