Я пытаюсь добавить задачу импорта в файл .csproj программным способом, но я не хочу использовать объекты Microsoft.Build.BuildEngine, чтобы сделать это, потому что VS тогда выдаст предупреждения об изменении файла проекта извне Visual Studio.
Я видел несколько страниц [1] [2], в которых предлагалось, что интерфейс IVsBuildPropertyStorage позволит мне получить доступ к частям MSBuild файла .csproj, но у меня возникают проблемы с выяснением, как это сделать, или даже возможно на самом деле. Похоже, мне нужно указать имя свойства, к которому я хочу получить доступ, но я не уверен, как это выяснить. Вызов 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
Спасибо. Буду признателен за любые предложения, которые я могу получить с этим.