如何在不写入 .csproj 文件的情况下从 VSIX 设置自定义 MsBuild 属性?
How can I set custom MsBuild property from VSIX without writing into .csproj file?
我为 Visual Studio 创建了一个 VSIX 扩展,它添加了一个自定义下拉菜单。我需要此菜单中的值应用于文件的 .csproj 属性 而无需更改文件本身,如配置菜单。例如:
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DefineConstants>DEBUG;TRACE;</DefineConstants>
</PropertyGroup>
-- .csproj 的默认内容。当我从 Visual Studio 配置下拉菜单中选择 "Debug" 时,配置 属性 值切换到调试而不更改 .csproj 文件,代码文件中的“#if DEBUG”块被激活。
我在解决方案中有多个项目,每个项目都有这个 属性。
如果我覆盖 .csproj,那么这些更改将被源代码管理监控,这是我不希望的。
请帮忙
How can I set custom MsBuild property without writing into .csproj file?
如果自定义的MSBuild属性是项目文件中的PropertyGroup,可以通过MSBuild命令行调用MSBuild传递参数到项目文件中:
<PropertyGroup>
<CustomTestName>TestValue1</CustomTestName>
</PropertyGroup>
命令行:
msbuild /p:CustaomTestName=TestValue2
或者,您可以在自定义 属性 中使用选项“condition
”,如项目文件中的 [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>
我为 Visual Studio 创建了一个 VSIX 扩展,它添加了一个自定义下拉菜单。我需要此菜单中的值应用于文件的 .csproj 属性 而无需更改文件本身,如配置菜单。例如:
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DefineConstants>DEBUG;TRACE;</DefineConstants>
</PropertyGroup>
-- .csproj 的默认内容。当我从 Visual Studio 配置下拉菜单中选择 "Debug" 时,配置 属性 值切换到调试而不更改 .csproj 文件,代码文件中的“#if DEBUG”块被激活。
我在解决方案中有多个项目,每个项目都有这个 属性。 如果我覆盖 .csproj,那么这些更改将被源代码管理监控,这是我不希望的。 请帮忙
How can I set custom MsBuild property without writing into .csproj file?
如果自定义的MSBuild属性是项目文件中的PropertyGroup,可以通过MSBuild命令行调用MSBuild传递参数到项目文件中:
<PropertyGroup>
<CustomTestName>TestValue1</CustomTestName>
</PropertyGroup>
命令行:
msbuild /p:CustaomTestName=TestValue2
或者,您可以在自定义 属性 中使用选项“condition
”,如项目文件中的 [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>