C# 在特定方法调用(.net二进制类库)时生成警告

C# 在特定方法调用(.net二进制类库)时生成警告,c#,.net,visual-studio,roslyn-code-analysis,C#,.net,Visual Studio,Roslyn Code Analysis,我正在使用一些外部.net库(已编译,源代码不可用) 我希望有一些特定的方法调用来生成编译器警告 例如,假设我们有以下类: public class ExternalAPI { public void MethodCallNotThreadSafe(); public void MethodCallThreadSafe(); } 我希望我的代码中的以下内容生成一个编译器警告(这也会触发一个错误,因为使用警告作为错误,但这是离题的) 如前所述,我没有库的源代码(或者在某些情况

我正在使用一些外部.net库(已编译,源代码不可用)

我希望有一些特定的方法调用来生成编译器警告

例如,假设我们有以下类:

public class ExternalAPI
{
     public void MethodCallNotThreadSafe();
     public void MethodCallThreadSafe();
}
我希望我的代码中的以下内容生成一个编译器警告(这也会触发一个错误,因为使用警告作为错误,但这是离题的)


如前所述,我没有库的源代码(或者在某些情况下,我有,但不想使用Observe),因此Observe属性不是一个选项。

如果为extnal库函数调用创建一个包装类,该怎么办。在这个类中,您可以使用#warning指令。如果您不想使用这些方法,为什么要使用这些方法?只需搜索“非线程安全”方法调用,并将其替换为安全的方法调用。你可以用Rosyln编写一个代码分析器,但它将是非常特定于项目的。@RonBeyer嗯,一个原因是,我不是唯一一个使用该代码库(实际上是开源的)的人,所以我更喜欢使用自动系统,使生成/ci失败,而不是手动检查代码。第二个问题当然是,问题中的方法并不像我简化的示例中那样明显(所以用户很容易意外地“使用”它,而不是正确的方法),是的,在发布问题后,我看起来像Roslyn Analyzer项目,并制作了一个适合我需要的(非常简单)@TamásKecskeméti不是唯一一个使用该代码库的人,因此我想确保在我的上下文中永远不会访问该属性(或方法)。包装它不会阻止它被意外调用。
ExternalAPI api = new ExternalAPI();
api.MethodCallNotThreadSafe(); //Should trigger a warning