我正在尝试以编程方式向.csproj文件添加导入任务,但我不想使用Microsoft.Build.BuildEngine对象来完成此操作,因为VS会弹出关于项目文件被从Visual Studio外部修改的警告。
我看到了一些页面[1] [2]建议我使用IVsBuildPropertyStorage接口来访问.csproj文件的MSBuild部分,但我很难弄清楚如何做到这一点,或者它是否真的可行。看起来我需要指定要访问的属性名称,但我不确定如何找出它。对于已经设置为我最终结果所需的项目文件,调用“Import”属性的GetPropertyValue()不返回任何内容:
我看到了一些页面[1] [2]建议我使用IVsBuildPropertyStorage接口来访问.csproj文件的MSBuild部分,但我很难弄清楚如何做到这一点,或者它是否真的可行。看起来我需要指定要访问的属性名称,但我不确定如何找出它。对于已经设置为我最终结果所需的项目文件,调用“Import”属性的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
谢谢。我希望能得到任何有关此事的建议。
<Import />
能否提供你所需的功能? - Filburt