我有一个带有这样的IntermediateDirectory的VS项目:“ .... \ temp \ $(SolutionName)\ $(ProjectName)”。

我可以使用宏或添加宏来读取此值,但是,我需要实际目录才能在其中操作文件。现在,我用相应的值手动替换“ $(SolutionName)”和“ $(ProjectName)”,它们虽然可以正常工作,但是当使用不同的宏甚至是属性表中的用户宏时,可能会变得很复杂。

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

最佳答案

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

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



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

VCProject vcMainProject =(VCProject)(_ applicationObject.Solution.SolutionBuild.StartupProjects作为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);

字符串finalString = vcCfg.Evaluate(“ .... \ temp \ $(SolutionName)\ $(ProjectName)”);



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

如果您不将其用于C ++,则应该为为其他语言(C#和VB)提供的Project,Configuration和Solution类提供类似的接口。

08-06 14:05