2011-05-09 2 views
4

Je veux obtenir le nom binaire d'un projet C++ avec un complément Visual Studio C#.Visual Studio Addin - Obtenir le nom Chemin du binaire d'un projet C++?

J'ai recherché et trouvé, que le EnvDTE.Configuration.properties devrait avoir un élément appelé "AssemblyName" mais les projets C++ ne semblent pas avoir cet élément. Est-ce que quelqu'un savait où pourrais-je obtenir cette information dans un addin de studio visuel?

+0

projets C++ ne sont pas des « ensembles » comme projets C# faire. Que voulez-vous dire par «assemblée»? –

+0

Hé, ok c'est bon. Je veux connaître le nom de la poubelle. La DLL ou exe avec son chemin. –

+0

Vous devriez pouvoir récupérer ceci avec $ (OutputPath) et $ (TargetName). – RedX

Répondre

3

Pour les projets de VC vous avez besoin d'avoir accès à l'objet VCConfiguration que vous devriez être en mesure d'obtenir à partir de la propriété de ObjectEnvDTE.Project comme:

EnvDTE.Project project = ... 
VCProject vcProj = (VCProject)project.Object; 
IVCCollection configs = (IVCCollection)vcProj.Configurations; 
VCConfiguration config = (VCConfiguration)configs.Item(configName); // like "Debug" 

À ce moment-là avec le VCConfiguration exactement comment obtenir aux bonnes propriétés dépend de votre configuration. Vous pouvez accéder à la VCLinkerTool depuis la propriété Tools et accéder aux propriétés OutputFile et autres. Ou, si vous utilisez les nouvelles feuilles de propriétés héritées, vous pouvez y accéder via la propriété Rules.

IVCCollection tools = (IVCCollection)config.Tools; 
VCLinkerTool linkTool = (VCLinkerTool)tools.Item("Linker Tool"); 
string outputFile = linkTool.OutputFile; 

// ------- 

IVCRulePropertyStorage ruleStorage = config.Rules.Item(ruleName); 
string outputFile = ruleStorage.GetEvaluatedPropertyValue("TargetName"); 
+0

C'est très bon. Je vais essayer! –

2

Afin d'obtenir le chemin complet du fichier binaire, suivez les étapes @Chadwick dit pour obtenir l'objet VCConfiguration. Et puis, il suffit d'utiliser la ligne de code suivante:

//returns the complete binary name including path as a string 
var primaryOutput = config.PrimaryOutput; 
Questions connexes