gpt4 book ai didi

c# - 向 IntelliSense 提供不应修改分部类的提示

转载 作者:可可西里 更新时间:2023-11-01 08:27:52 26 4
gpt4 key购买 nike

最近我使用了很多代码生成,通常与部分类结合使用。基本上设置如下:

  • 包含生成代码的部分类。此代码的某些部分将调用部分方法。代码重新生成了很多时间。代码生成器在某些情况下是自定义工具。
  • 部分方法在单独的文件中手动实现。

问题是,当我使用诸如“生成方法”之类的 Intellisense 功能时,出于某种原因,它们是在包含生成代码的文件中生成的。显然我不希望这样。

我的问题是:是否可以生成一些提示,告诉 Intellisense 它不应该触及某些“cs”文件(而是其他部分类)?


更新

回想起来,我应该注意到我正在使用自定义工具来生成代码。它不是 EF 或简单的转换;代码生成涉及相当多的逻辑。此外,它还生成带有部分类的完整命名空间和类结构。通过从 csproj 文件中提取“根命名空间”,然后使用文件夹结构找出绝对命名空间(这类似于 Linq2sql 的做法)。

xanatos(谢谢!)建议的答案有效:intellisense 对名称的操作进行排序,然后按字母顺序对名称进行排序,然后选择列表中的第一项。这意味着您可以生成一个 zzzz.foo.cs ,它(虽然有点难看)可以正常工作。我刚刚进行了一些实验,发现 查找所有引用 功能返回 VS 似乎使用的顺序。事实证明,它是这样工作的:

假设您有一个自定义工具,可以处理文件名 foo.bar 并将其转换为 foo.cs。自定义工具将生成字符串形式的内容并将其传回 Visual Studio(这就是自定义工具的工作方式......)。结果将在名为 foo.cs 的文件中。

现在,我很惊讶地发现 Intellisense 将它排序为 foo.cs 而是 foo.bar\foo.cs。换句话说:无论您在自定义工具中如何命名“cs”输出,您都必须将基本文件 foo.bar 重命名为类似 zoo.bar 的名称。

虽然这可能是一种解决方法,但我不愿意接受它作为答案,因为我将不得不为我的项目中的文件提供奇怪的名称(名称具有含义...)。此外,我的一些自定义工具依赖于它们的文件名,所以这也会被破坏......

因此,我仍然愿意就如何正确解决此问题提出建议。

最佳答案

从我在 VS2013 中完成的一个简单测试来看,Visual Studio 2013 似乎将该方法添加到他在解决方案资源管理器中找到的“第一个”文件中。因此,您可以简单地将 .something.cs 添加到您的文件名中,例如 MyClass.generated.csMyClass.cs。请注意,VS2013 似乎正在使用“完整路径”,路径顺序基于名称。所以:

Z\MyClass.cs

在之后

MyClass.generated.cs

(并且 Intellisense 会将代码放入 MyClass.generated.cs),即使在解决方案资源管理器中所有文件夹都排在第一位。

完整示例:

A\MyClass.gen3.cs

MyClass.gen2.cs

Z\MyClass.gen1.cs

这应该是 Intellisense“看到”的顺序,因此它将把新类放在 A\MyClass.gen3.cs 中。

关于c# - 向 IntelliSense 提供不应修改分部类的提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35629615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com