Visual Studio Addin - Получить имя \ путь двоичного файла проекта C ++? - PullRequest
4 голосов
/ 09 мая 2011

Я хочу получить двоичное имя проекта C ++ с надстройкой Visual Studio C #.

Я гуглил и обнаружил, что в свойствах EnvDTE.Configuration.properties должен быть элемент с именем "AssemblyName", но C ++проекты, кажется, не имеют этого элемента.

Кто-нибудь знал, где я могу получить эту информацию в дополнении к Visual Studio?

Ответы [ 2 ]

3 голосов
/ 02 января 2014

Чтобы получить полный путь к двоичному файлу, выполните действия, описанные @Chadwick, чтобы получить объект VCConfiguration.А затем просто используйте следующую строку кода:

//returns the complete binary name including path as a string
var primaryOutput = config.PrimaryOutput;
3 голосов
/ 19 мая 2011

Для проектов VC ++ вам необходимо получить доступ к объекту VCConfiguration, доступ к которому вы должны иметь из свойства EnvDTE.Project Object, например:

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

На данный момент с VCConfiguration, как именно получить правильные свойства, зависит от вашей настройки. Вы можете получить доступ к VCLinkerTool из свойства Tools и получить OutputFile и другие свойства. Или, если вы используете более новые унаследованные списки свойств, вы можете получить к ним доступ через свойство 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");
...