对于解决方案中的不同配置,如何为解决方案中的项目指定不同的生成类型(DLL或静态库)?

对于解决方案中的不同配置,如何为解决方案中的项目指定不同的生成类型(DLL或静态库)?,dll,configuration,visual-studio-2017,static-libraries,Dll,Configuration,Visual Studio 2017,Static Libraries,我有一个包含多个项目和配置的VisualStudio解决方案 对于其中一个项目,我想对不同的配置使用不同的配置类型(DLL或静态库) 例如,对于配置“Debug | Win32”,我想为该项目构建一个DLL,对于配置“Static Release | x64”,我想构建一个静态库 当我尝试为其中一个配置设置配置类型时,这是为所有配置设置的类型,因此对于所有配置,它似乎总是“DLL”或“Static Lib” 我举了一个不同的例子,我不知道这是如何实现的。或者你必须“破解”vcxproj文件吗?事

我有一个包含多个项目和配置的VisualStudio解决方案

对于其中一个项目,我想对不同的配置使用不同的配置类型(DLL或静态库)

例如,对于配置“Debug | Win32”,我想为该项目构建一个DLL,对于配置“Static Release | x64”,我想构建一个静态库

当我尝试为其中一个配置设置配置类型时,这是为所有配置设置的类型,因此对于所有配置,它似乎总是“DLL”或“Static Lib”


我举了一个不同的例子,我不知道这是如何实现的。或者你必须“破解”vcxproj文件吗?

事实上,这是可能的,但你需要编辑项目文件

项目文件是xml格式的,您应该可以找到如下条目

<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">...</PropertyGroup>
变成

<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
  <PlatformToolset>v141</PlatformToolset>
  <ConfigurationType>StaticLibrary</ConfigurationType>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
  <PlatformToolset>v141</PlatformToolset>
  <ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup>

v141
静态库
v141
动态图书馆

我发现这是可行的,但像往常一样,手工编辑xml时要小心,确保有备份,以防弄乱语法或xml嵌套。

您需要单独的项目。
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
  <PlatformToolset>v141</PlatformToolset>
  <ConfigurationType>StaticLibrary</ConfigurationType>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
  <PlatformToolset>v141</PlatformToolset>
  <ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup>