如何在 Visual Studio 中支持复杂的项目配置?
How to support complex project configurations in Visual Studio?
我正在从事一个需要整个多维配置矩阵的项目。 Theres (Debug / Release / Optimized / Final), (Editor / Non-Editor), (Win32 / Win64 / iOS / Android), (USA / Europe / Asia) 等所有不同的构建目标(即 win32_europe_debug_editor.exe)和他们自己的一组库,包括,#defines 等等。
有没有办法在 Visual Studio 中向项目配置工具栏添加更多下拉菜单?目前有 "Platforms" 和 "Configurations"。我在平台中有 win32/win64/ios/android,但仍然有许多不同的配置。
不幸的是,"Don't set your project up like this" 不在我的控制范围内 - 这是承包公司想要的方式,我们必须遵守。
我知道通过 MSBuild 可以使这变得容易得多,但我只是希望找出是否有办法做到这一点,同时至少部分留在 Visual Studio 界面内,就像团队的其他成员习惯的那样。这是一个非常棘手的设置,我想尽量减少他们必须承担的额外认知负担!
谢谢!
不能在.sln文件中添加更多参数,它固定只支持两个——平台和配置。如果您希望 Visual Studio 使用产品的不同参数,您有两个选择。
1.Expand 您的配置参数包含附加值,例如多个集合的叉积。例如。对于您的情况,您的原始参数如下:
Configuration={Debug, Release, Optimised, Final}
Editor={Editor, NonEditor}
Region={USA, Europe}
您可以将它们转换为等效的配置选择:
Configuration={Debug_Editor_USA, Debug_Editor_Europe, Debug_NonEditor_USA, Debug_NonEditor_Europe, Release_Editor_USA, ... }
这当然有可扩展性问题,所以它只适用于少量的附加参数。另请注意,类似的扩展平台参数选择的尝试可能不会奏效,因为许多目标仅适用于平台 属性.
的标准值
2.You 可以在您的 .**proj 文件中保留其他参数,您可以从环境变量中覆盖默认值。例如。如果您的解决方案中的每个项目都有以下部分:
<PropertyGroup>
<EditorType Condition="'$(IDE_EDITOR_TYPE)' != ''">$(IDE_EDITOR_TYPE)</EditorType>
<EditorType Condition="'$(EditorType)' != ''">NonEditor</EditorType>
<RegionType Condition="'$(IDE_REGION_TYPE)' != ''">$(IDE_REGION_TYPE)</RegionType>
<RegionType Condition="'$(RegionType)' != ''">USA</RegionType>
</PropertyGroup>
,那么可以通过设置环境变量来覆盖附加参数的值,而默认值将为 NonEditor
和 USA
。要让你的 VS IDE 选择非默认值,你必须执行以下操作:
- 打开 VS cmd window
- cd 到您的 .sln 的位置
set IDE_EDITOR_TYPE=Editor
set IDE_REGION_TYPE=Europe
devenv MySolution.sln
VS IDE,以这种方式启动将使用这些设置来执行构建、调试、Intellisense 等。顺便说一句,当你更改参数时,Intellisense 需要重新构建,最简单的方法是删除文件 MySolution.sdf
在启动 devenv 之前。
我正在从事一个需要整个多维配置矩阵的项目。 Theres (Debug / Release / Optimized / Final), (Editor / Non-Editor), (Win32 / Win64 / iOS / Android), (USA / Europe / Asia) 等所有不同的构建目标(即 win32_europe_debug_editor.exe)和他们自己的一组库,包括,#defines 等等。
有没有办法在 Visual Studio 中向项目配置工具栏添加更多下拉菜单?目前有 "Platforms" 和 "Configurations"。我在平台中有 win32/win64/ios/android,但仍然有许多不同的配置。
不幸的是,"Don't set your project up like this" 不在我的控制范围内 - 这是承包公司想要的方式,我们必须遵守。
我知道通过 MSBuild 可以使这变得容易得多,但我只是希望找出是否有办法做到这一点,同时至少部分留在 Visual Studio 界面内,就像团队的其他成员习惯的那样。这是一个非常棘手的设置,我想尽量减少他们必须承担的额外认知负担!
谢谢!
不能在.sln文件中添加更多参数,它固定只支持两个——平台和配置。如果您希望 Visual Studio 使用产品的不同参数,您有两个选择。
1.Expand 您的配置参数包含附加值,例如多个集合的叉积。例如。对于您的情况,您的原始参数如下:
Configuration={Debug, Release, Optimised, Final}
Editor={Editor, NonEditor}
Region={USA, Europe}
您可以将它们转换为等效的配置选择:
Configuration={Debug_Editor_USA, Debug_Editor_Europe, Debug_NonEditor_USA, Debug_NonEditor_Europe, Release_Editor_USA, ... }
这当然有可扩展性问题,所以它只适用于少量的附加参数。另请注意,类似的扩展平台参数选择的尝试可能不会奏效,因为许多目标仅适用于平台 属性.
的标准值2.You 可以在您的 .**proj 文件中保留其他参数,您可以从环境变量中覆盖默认值。例如。如果您的解决方案中的每个项目都有以下部分:
<PropertyGroup>
<EditorType Condition="'$(IDE_EDITOR_TYPE)' != ''">$(IDE_EDITOR_TYPE)</EditorType>
<EditorType Condition="'$(EditorType)' != ''">NonEditor</EditorType>
<RegionType Condition="'$(IDE_REGION_TYPE)' != ''">$(IDE_REGION_TYPE)</RegionType>
<RegionType Condition="'$(RegionType)' != ''">USA</RegionType>
</PropertyGroup>
,那么可以通过设置环境变量来覆盖附加参数的值,而默认值将为 NonEditor
和 USA
。要让你的 VS IDE 选择非默认值,你必须执行以下操作:
- 打开 VS cmd window
- cd 到您的 .sln 的位置
set IDE_EDITOR_TYPE=Editor
set IDE_REGION_TYPE=Europe
devenv MySolution.sln
VS IDE,以这种方式启动将使用这些设置来执行构建、调试、Intellisense 等。顺便说一句,当你更改参数时,Intellisense 需要重新构建,最简单的方法是删除文件 MySolution.sdf
在启动 devenv 之前。