gpt4 book ai didi

c# - 引用已编译的 dll 时,Resharper 代码注释不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 20:00:59 24 4
gpt4 key购买 nike

假设我有以下类(class)

public class MyClass
{
[NotifyPropertyChangedInvocator("propertyName")]
public void RespondToProperty(string propertyName)
{
//Some code here...
}
}

当解决方案中的另一个项目使用此类时,注释起作用。 Resharper 会自动完成调用者类的属性(应该如此)。但是当我引用编译后的 dll 时,resharper 不会自动完成属性名称。

我还尝试定义以下外部注释,但没有成功:

<assembly name=”MyAssembly">
<member name=”M:MyAssembly.MyClass.RespondToProperty(System.String,System.String)”>
<attribute ctor=”M:JetBrains.Annotations.NotifyPropertyChangedInvocatorAttribute.#ctor” />
</member>
</assembly>

注释是否可以在不引用项目代码而仅使用已编译的 dll 的情况下工作?

最佳答案

如果您使用最新版本的注释 - 例如从 ReSharper 9 设置复制的默认源实现,或引用 official nuget package - 默认情况下,它们不会编译到生成的 dll 中。

属性是使用 [Conditional("JETBRAINS_ANNOTATIONS")] 应用定义的。这意味着除非定义了 JETBRAINS_ANNOTATIONS 符号,否则不会编译属性,但 ReSharper 仍然可以使用这些属性进行分析。如果您定义 JETBRAINS_ANNOTATIONS,属性将编译到生成的 dll 中,并且 ReSharper 现在可以在生成的 dll 用作引用时使用这些属性。

需要注意的一件事 - 如果您通过 nuget 包引用 dll 并定义 JETBRAINS_ANNOTATIONS,那么生成的 dll 现在将直接引用 JetBrains.Annotations.dll,并且您需要将 JetBrains.Annotations.dll 与生成的 dll 一起发送。如果您通过源代码包含注释,它们将被编译到生成的 dll 中,并且您没有任何额外的二进制引用。

关于c# - 引用已编译的 dll 时,Resharper 代码注释不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28380780/

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