为什么“Namespace Provider”属性不会保存在给定子目录的项目文件中?

时间:2009-04-03 10:32:22

标签: visual-studio visual-studio-2008 resharper namespaces code-analysis

VS2008项目中的子目录主要用于在磁盘上物理表示项目的命名空间结构。每个文件夹都有一个名为“Namespace Provider”的布尔属性,当设置为True时,ReSharper会验证给定类的物理位置是否与逻辑命名空间位置相对应。

有时我不希望将文件夹用作命名空间提供程序,因此我将此属性设置为False,而ReSharper不执行检查。

问题

此设置不会保存在项目文件中,因此下次打开解决方案时会恢复为默认值True。这不是什么大不了的事,但ReSharper确实会给你很多关于不正确名称空间的警告。

为什么不保存属性值?

版本...

使用VS2008 SP1的ReSharper 4.0

3 个答案:

答案 0 :(得分:17)

对我来说,此设置保存在.csproj.resharper文件中。我们遇到了问题,因为有些开发人员在这个文件上添加了一个忽略模式,而不是检查它。

答案 1 :(得分:12)

@olivehour

这是一个项目级设置,保存在ProjectName.csproj.DotSettings文件中。考虑将所有项目级.DotSettings文件检查为源代码控制,以在您的团队中保留此设置。

答案 2 :(得分:3)

快速回答: 在切换分支之前,请关闭要切换的解决方案。这可以防止VS提示您“重新加载”解决方案,因为它已更改。 Visual Studio将在重新加载时删除.suo文件中的ReSharper自定义设置。

答案很长: 我发现坚持“命名空间提供程序”错误设置(True设置始终保持,因为它是默认状态)是为了确保在切换分支之前(通过ToirtoiseSVN),我记得关闭Vi​​sual Studio或解决方案。

在Visual Studio提示您显示消息后,在您选择“重新加载”Visual Studio时,状态将被清除:“项目'project.name.here'已在环境外修改。按重新加载加载从磁盘更新项目。按忽略忽略外部更改。“

我认为出现这种情况是因为Visual Studio在重新加载时会从.suo文件中删除所有未知值。这是ReSharper设置(命名空间提供程序)持久化的地方。