向ENVDTE.Project添加属性

时间:2013-03-29 14:17:14

标签: visual-studio envdte visual-studio-sdk

我正在尝试使用Visual Studio扩展,需要添加一个持久保存到当前csproj文件的属性,如下所示:

    <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <MyProperty Condition="$(MyProperty) == '' Or $(MyProperty) == '*Undefined*'">MyPropertyValue</MyProperty>

我有一个ENVDTE.Project实例,但似乎无法在API中的任何位置找到向项目添加新属性。

我能够通过将其转换为MSBuild项目并以这种方式添加属性来解决该问题,但是这种方法会导致用户被提示csproj文件已在IDE外部进行了修改并要求他们重新加载,我不想要。

如何使用ENVDTE.Project实例添加属性,或者阻止“在环境外修改”提示以其他方式显示?

1 个答案:

答案 0 :(得分:1)

使用MSBuild项目解决方法解决了我的问题。

导致用户提示项目文件已更改的问题是我在MSBuild项目对象上调用了.Save(),而不是我的ENVDTE项目对象。