如何在 ReSharper DotSettings 图层中使用相对路径

Posted

技术标签:

【中文标题】如何在 ReSharper DotSettings 图层中使用相对路径【英文标题】:How to use relative paths in ReSharper DotSettings layers 【发布时间】:2015-02-11 02:05:42 【问题描述】:

我们希望在多个解决方案之间共享.DotSettings。我们的目标是在我们的所有X.sln.Dotsettings 中拥有一个 CodeStyle.DotSettings 作为一个层。但是,当我添加图层时,我看到了意外的行为。

我进入“管理选项”,右击“Solution X team-shared”->“添加层”->“打开设置文件”,选择CodeStyle.DotSettings并点击“打开”。

然后我检查X.sln.DotSettings,看到两个引用,一个使用绝对路径,一个使用相对路径:

<s:String x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=3BE2D8150433584697322AAD3C173856/AbsolutePath/@EntryValue">C:\path\to\my\repo\CodeStyle.DotSettings</s:String> <s:String x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=3BE2D8150433584697322AAD3C173856/RelativePath/@EntryValue">..\CodeStyle.DotSettings</s:String>

检查本地存储库的绝对路径没有意义,因此我尝试从X.DotSettings 中删除该行,但它不再显示在“设置层”对话框中。相对路径的前导点似乎很可疑,所以我尝试从中删除..\,但它仍然没有出现在“设置层”中。

我做错了什么?

我们正在使用 ReSharper 8.2.3

【问题讨论】:

希望这已经过时了。使用 R# 2018.3.1,仍然添加了绝对路径,但是从 .sln.DotSettings 文件中将其注释掉似乎不会阻止设置层对话框识别它。 【参考方案1】:

在 JetBrains 的跟踪器中查看相应的问题:RSRP-339002。

不要删除任何内容:ReSharper 会尝试从两个路径加载文件,所以您应该没问题。在过去的两年里,我一直在使用类似的设置(多个解决方案之间共享和版本化的 DotSettings),没有出现任何问题。

您不能删除绝对路径:它被用作键。您仍然可以为该问题投票。我个人不喜欢在源代码控制的文件中使用绝对路径,即使在这种情况下它不会造成任何伤害。

关于额外的前导..\,我观察到相同的行为。我不知道为什么;也许路径是相对于缓存文件夹而不是解决方案文件夹?无论如何,它肯定是需要的。

【讨论】:

同意,这令人困惑。我已经对这个问题发表了评论并投票了。【参考方案2】:

R# 保留绝对路径和相对路径,以适应使用注入文件层的所有场景。相对路径适用于具有注入层文件的源代码管理托管解决方案,该文件也签入到相同的源代码管理中。绝对路径适用于从外部资源注入文件,例如机器上的全局路径,或在源代码控制解决方案的情况下的网络共享。

绝对路径目前是强制性的。主要是因为历史原因。这可能会更改为“需要任何一个”。

相对路径是相对于注入它的主机层的磁盘文件。在您的情况下,它是 .sln.DotSettings 文件。为什么,它应该是它的文件夹,但我在实现它时错过了.Parent 的东西!而且它在测试或测试程序期间没有浮出水面。就像,它适用于相对路径,直到现在没有人费心计算双点 %-)

【讨论】:

UPD abs 路径不再是强制性的,下一个版本 (wave02) 将支持 rel-path-only 注入层。

以上是关于如何在 ReSharper DotSettings 图层中使用相对路径的主要内容,如果未能解决你的问题,请参考以下文章

在 InspectCode 中应用 Resharper 命名规则

如何在Visual Studio中禁用ReSharper并再次启用它?

如何在 ReSharper 扩展中获得构建的结果

你如何使用 Jasmine + Resharper 引用外部库

如何防止 ReSharper 在生成代码时为内置类型添加“@”符号?

如何修复:在闭包 resharper 警告中访问 foreach 变量?