Visual Studio宏中的宏扩展或添加

Die*_*ser 4 visual-studio-2008 visual-studio

我有一个像这样的IntermediateDirectory的VS项目:"....\temp\$(SolutionName)\ $(ProjectName)".

我可以使用宏或添加来读取此值,但是,我需要实际的目录来操作那里的文件.现在,我用相应的值手动替换"$(SolutionName)"和"$(ProjectName)",这样可以正常工作,但是当使用不同的宏甚至是属性表中的用户宏时,可能会变得复杂.

所以我的问题是:Visual Studio API是否具有内置函数来扩展这些宏?还是有其他优雅的解决方案吗?

小智 5

有一个优雅的解决方案!但我只知道适用于C++项目的那个.

假设您使用的是C#加载项:


//从第一个启动项目中获取主项目

VCProject vcMainProject =(VCProject)(_ applicationObject.Solution.SolutionBuild.StartupProjects as IVCCollection).Item(1);

项目mainProj =(Project)_vcMainProject .Object;

//获取我们将要使用的配置

IVCCollection cfgs =(IVCCollection)_vcMainProject .Configurations;

VCConfiguration vcCfg =(VCConfiguration)cfgs.Item(mainProj.ConfigurationManager.ActiveConfiguration.ConfigurationName +"|"+ mainProj.ConfigurationManager.ActiveConfiguration.PlatformName);

string finalString = vcCfg.Evaluate("....\temp\$(SolutionName)\ $(ProjectName)");


您还可以查看此页面:http: //msdn.microsoft.com/en-us/library/czt44k0x%28VS.71%29.aspx

如果你没有将它用于C++,那么为其他语言(C#和VB)提供的Project,Configuration和Solution类应该有类似的接口.