Ce qu'un assemblage particulier construit est explicitement défini dans le fichier vcxproj, il est connu et défini avant la compilation. Ce qui peut être délicat, c'est que dans les paramètres de votre fichier de solution qui apparaissent dans le gestionnaire de configuration, la configuration et la plate-forme de votre solution peuvent s'être fixées sur une configuration et une plate-forme de projet bizarres qui ne correspondent pas à la construction de votre solution.
Dans le fichier xml vcxproj, le type de sortie de la construction apparaîtra comme la valeur de l'attribut <ConfigurationType>
élément.
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
De la même manière, dans le projet, les pages de propriétés dans la section Configuration Properties -> General -> Configuration Type
est l'endroit où vous spécifiez ce que votre assemblage construit. Vous pouvez même vous écarter de l'extension cible si cela a un sens, par exemple lorsque je construis des trucs BoostPython, je remplace dll par pyd.
Pour mettre en évidence le type de mélange bizarre dont je parle, qui peut être dû à une erreur ou à une fusion défectueuse, vous pouvez vérifier quels sont les paramètres de construction détaillés pour chaque projet dans la configuration de la solution. Je donne un exemple ci-dessous où la plateforme de la solution est ReleaseOffline mais les différents projets de la solution sont réglés sur Release, DebugStatic, etc. La plupart des projets sont désactivés dans la capture d'écran, mais vous pouvez imaginer un mélange de dépendances qui mettrait les choses dans un mauvais état en mélangeant les types de construction. Certains mélanges peuvent être intentionnels, alors assurez-vous de savoir ce que vous faites/cherchez puisque Visual Studio offre ce type de flexibilité dans ces configurations. N'oubliez pas non plus que les paramètres que vous voyez sont spécifiques à la paire configuration/plateforme sélectionnée. Si vous changez l'un ou l'autre, vous verrez probablement des changements dans les valeurs de tout ce qui a été discuté ci-dessus.