我正在尝试以编程方式将导入任务添加到 .csproj 文件,但我不想使用 Microsoft.Build.BuildEngine 对象来执行此操作,因为 VS 会弹出有关从外部修改项目文件的警告视觉工作室。
我看过几页 [1] [2] 建议 IVsBuildPropertyStorage 接口将让我访问 .csproj 文件的 MSBuild 部分,但我无法弄清楚如何做到这一点,或者是否真的有可能. 看起来我需要指定要访问的属性的名称,但我不确定如何弄清楚。为“导入”属性调用 GetPropertyValue() 不会为已设置的项目文件返回任何内容,我希望我的最终结果看起来如何:
EnvDTE.Project proj = ...;
var sol = Package.GetGlobalService(typeof(VsSolution)) as IVsSolution;
IVsHierarchy hier;
sol.GetProjectOfUniqueName(p.UniqueName, out hier);
var storage = hier as IVsBuildPropertyStorage;
string val;
storage.GetPropertyValue("Import", String.Empty,
(uint)_PersistStorageType.PST_PROJECT_FILE, out val);
// val is null
[1] https://mpfproj.svn.codeplex.com/svn/9.0/Tests/UnitTests/ProjectTest.cs
[2] http://social.msdn.microsoft.com/Forums/en-US/vsx/thread /e1983591-120a-4a2f-a910-e596dd625e68
谢谢。我会很感激我能得到的任何建议。