我想用Visual Studio C#Addin获取C ++项目的二进制名称。
我用google搜索并发现,EnvDTE.Configuration.properties应该有一个名为“AssemblyName”的元素,但C ++项目似乎没有这个元素。
有人知道我在哪里可以在visual studio addin中获取这些信息吗?
答案 0 :(得分:3)
对于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");
和其他媒体资源。或者,如果您使用较新的继承属性表,则可以通过{{1}}属性访问这些属性表。
{{1}}
答案 1 :(得分:3)
为了获得二进制文件的完整路径,请按照@Chadwick所说的获取VCConfiguration
对象的步骤进行操作。然后,只需使用以下代码行:
//returns the complete binary name including path as a string
var primaryOutput = config.PrimaryOutput;