Visual Studio 可以使用不在目录层次结构中的 .editorconfig 吗?
Can Visual Studio use an .editorconfig not in the directory hierarchy?
我们有大量的解决方案分布在大量的存储库中,这些存储库并不总是以一种使我们更容易更新 .editorconfig 的方式共享目录层次结构,使其适用于所有 projects/solutions 在组织中。我们目前通过内部 NuGet 包应用我们所有的代码分析配置,我希望我们也能以这种方式包括我们组织范围内的 .editorconfig 设置?
我尝试了一个快速实验,将以下内容添加到项目中以查看链接文件是否会被接受(因为我们可以简单地将其添加到 NuGet 包中已有的 props 文件中),但它似乎没有当前受到尊重。
<ItemGroup>
<None Include="C:\SomeAlternatePath\ECTest\.editorconfig" Link=".editorconfig" />
</ItemGroup>
我们是否可以使用其他一些 MSBuild 属性 或机制来更好地促进这一点,而无需逐字地向每个 solution/project/repo 写入重复文件?
Is there some other MSBuild property or mechanism we could use to
better facilitate this without literally writing a duplicate file to
every solution/project/repo?
恐怕答案是否定的。导致 .editorconfig
文件与 msbuild 或 xx.csproj
无关。只有 文件层次结构 可以影响配置文件的工作方式。更多详情请查看this document.
一些测试:
当我右击项目=>添加.editorconfig
在当前项目中添加这个文件时,在xx.csproj
中添加了一行:<None Include=".editorconfig"/>
。
如果我们设置 indent_size = 32
,它适用于当前项目。现在我们可以 right-click that file=>Exclude from Project
从当前项目系统中删除该文件。 (此操作将删除 xx.csproj 中的 <None Include=".editorconfig"/>
,但该文件仍在 xx.csproj 所在的同一文件夹中)
现在重新加载项目,设置(indent_size=32)仍然有效。所以很明显,如果我们把这个文件放在项目目录下,那么它就会生效,不管我们在项目文件中是否有关于它的定义(xx.csproj
).
建议:
根据您的描述,您的所有项目都使用相同的 .editorconfig
文件。由于此文件的工作范围受文件层次结构的影响,您可以通过以下方式减少一些无意义的工作:
1.Place 解决方案文件夹中的那个文件,它将适用于该解决方案文件夹下的所有项目
2.Place repos
(C:\Users\xxx\source\repos) 文件夹中的那个文件,它将适用于该文件夹下的所有解决方案和项目。
3.So 如果您的大部分解决方案都在路径 C:\somepath
下,请将该文件放在这里,该路径下的所有项目都将从中受益。关于 file hierarchy
中的 precedence 请参阅 this one.
希望以上内容对您有所帮助:)
我们有大量的解决方案分布在大量的存储库中,这些存储库并不总是以一种使我们更容易更新 .editorconfig 的方式共享目录层次结构,使其适用于所有 projects/solutions 在组织中。我们目前通过内部 NuGet 包应用我们所有的代码分析配置,我希望我们也能以这种方式包括我们组织范围内的 .editorconfig 设置?
我尝试了一个快速实验,将以下内容添加到项目中以查看链接文件是否会被接受(因为我们可以简单地将其添加到 NuGet 包中已有的 props 文件中),但它似乎没有当前受到尊重。
<ItemGroup>
<None Include="C:\SomeAlternatePath\ECTest\.editorconfig" Link=".editorconfig" />
</ItemGroup>
我们是否可以使用其他一些 MSBuild 属性 或机制来更好地促进这一点,而无需逐字地向每个 solution/project/repo 写入重复文件?
Is there some other MSBuild property or mechanism we could use to better facilitate this without literally writing a duplicate file to every solution/project/repo?
恐怕答案是否定的。导致 .editorconfig
文件与 msbuild 或 xx.csproj
无关。只有 文件层次结构 可以影响配置文件的工作方式。更多详情请查看this document.
一些测试:
当我右击项目=>添加.editorconfig
在当前项目中添加这个文件时,在xx.csproj
中添加了一行:<None Include=".editorconfig"/>
。
如果我们设置 indent_size = 32
,它适用于当前项目。现在我们可以 right-click that file=>Exclude from Project
从当前项目系统中删除该文件。 (此操作将删除 xx.csproj 中的 <None Include=".editorconfig"/>
,但该文件仍在 xx.csproj 所在的同一文件夹中)
现在重新加载项目,设置(indent_size=32)仍然有效。所以很明显,如果我们把这个文件放在项目目录下,那么它就会生效,不管我们在项目文件中是否有关于它的定义(xx.csproj
).
建议:
根据您的描述,您的所有项目都使用相同的 .editorconfig
文件。由于此文件的工作范围受文件层次结构的影响,您可以通过以下方式减少一些无意义的工作:
1.Place 解决方案文件夹中的那个文件,它将适用于该解决方案文件夹下的所有项目
2.Place repos
(C:\Users\xxx\source\repos) 文件夹中的那个文件,它将适用于该文件夹下的所有解决方案和项目。
3.So 如果您的大部分解决方案都在路径 C:\somepath
下,请将该文件放在这里,该路径下的所有项目都将从中受益。关于 file hierarchy
中的 precedence 请参阅 this one.
希望以上内容对您有所帮助:)