3

プログラム的に$(XXX)を変換現在、私は$(XXX)(例により、$(SolutionDir)を変換するために平均を見つけることができません。または$(TargetName))をC#およびVisual.VCProject APIを使用してプログラムで実行します。Visual Studioの拡張:私はVisualStudioを2017年</p> <p>の拡張子を作ってみる

EnvDTE.Project project = (EnvDTE.Project)selectedProjects.GetValue(0); 
var vcproj = project.Object as VCProject; 
VCConfiguration cfg = (VCConfiguration)vcproj.ActiveConfiguration; 
VCDebugSettings debug = (VCDebugSettings)cfg.DebugSettings; 

string path = debug.WorkingDirectory; 
// Here path is $(ProjectDir) But I need something like c:\myProject 
// Resolution can be done because Visual can do: my question is : How ? 

これを行うにはいくつかのアイデアがありますか?

参考& DOC:

https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.vcprojectengine.vcconfiguration.debugsettings.aspx

編集:いくつかの検索

後、私はいくつかは、およそ$()ドキュメントで説明した

https://docs.microsoft.com/en-us/visualstudio/msbuild/how-to-reference-the-name-or-location-of-the-project-file

文書のこの部分に返信がありますか?

https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivsbuildpropertystorage(v=vs.140).aspx

https://docs.microsoft.com/fr-fr/visualstudio/extensibility/internals/persisting-data-in-the-msbuild-project-file

https://docs.microsoft.com/fr-fr/visualstudio/extensibility/internals/using-msbuild

答えて

1

使用VCConfiguration.Evaluateは、プロジェクトモデルや環境マクロ

EnvDTE.Project project = (EnvDTE.Project)selectedProjects.GetValue(0); 
var vcproj = project.Object as VCProject; 
VCConfiguration cfg = (VCConfiguration)vcproj.ActiveConfiguration; 
VCDebugSettings debug = (VCDebugSettings)cfg.DebugSettings; 

//string path = debug.WorkingDirectory; 
string path = cfg.Evaluate(debug.WorkingDirectory); 

// Here path is $(ProjectDir) But I need something like c:\myProject 
// Resolution can be done because Visual can do: my question is : How ? 
の価値を評価します
関連する問題