gpt4 book ai didi

c# - 在 C# 中禁用 OBSOLETE 错误

转载 作者:可可西里 更新时间:2023-11-01 08:02:59 25 4
gpt4 key购买 nike

我正在使用 Microsoft TFS API,其中一个接口(interface)的属性之一已被标记为过时,它指示我使用不同的属性。不幸的是,API 要我使用的属性由 TFS2010 而不是 TFS2008 使用。

我试过这样做:

#pragma warning disable 0612, 0618
request.CommandLineArguments = arguments;
#pragma warning restore 0612, 0618

但我仍然收到 CommandLineArguments 已过时的错误。无论如何要抑制这个?

编辑

不幸的是,这并没有显示为“错误警告”,事实上,在我的项目中关闭了将警告视为错误。这是违规代码的屏幕截图以及错误列表

enter image description here

编辑 2:

使用 ILSpy 后,CommandLineArguments 属性在 TFS2010 API 中如下所示:

    [Obsolete("This property has been deprecated. Please remove all references. To pass command line arguments to MSBuild.exe, set the ProcessParameters property.", true)]
string CommandLineArguments
{
get;
set;
}

不幸的是,我认为没有办法告诉编译器忽略 Obsolete 属性导致的错误。

编辑 3正如@Peter Ritchie 指出的那样,这个值可以通过反射来设置。正如我对这个问题的思考一样,尽管我的猜测是如果 Microsoft 将该属性设置为抛出异常,即使您确实通过反射设置了它,我怀疑该值是否会在任何地方被引用。

最佳答案

Visual Studio 2015

构建因 [过时] 而失败?

只有在启用“将警告视为错误”并且存在具有 [Obsolete] 属性的方法时才会发生这种情况。

方法一:将错误降级为警告

添加<WarningsNotAsErrors>612,618</WarningsNotAsErrors>.csproj文件(对所有部分重复):

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<WarningsNotAsErrors>612,618</WarningsNotAsErrors>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>

如果处理很多.csproj files , 请参阅 Appendix A: Notepad++ for search and replace .

方法二:忽略文件中的错误

Note: This method is not recommended, because it hides the warnings for methods marked [Obsolete]. We still want to see a list of all calls to obsolete methods so we can upgrade them.

使用 #pragma warning disable 612,618

方法三:忽略项目中的错误

Note: This method is not recommended, because it hides the warnings for methods marked [Obsolete]. We still want to see a list of all calls to obsolete methods so we can upgrade them.

编辑项目(对所有部分重复):

enter image description here

方法四:忽略项目中的错误

Note: This method is not recommended, because it hides the warnings for methods marked [Obsolete]. We still want to see a list of all calls to obsolete methods so we can upgrade them.

手动编辑您的 .csproj 以禁用针对特定错误的警告。添加标签 <NoWarn>612,618</NoWarn> (对所有部分重复):

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<NoWarn>612,618</NoWarn>
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>

附录 A:用于搜索和替换的 Notepad++

有很多文件?没问题!

打开所有.csproj NotePad++ 中的文件,然后:

  • 查找:<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
  • 替换:<TreatWarningsAsErrors>true</TreatWarningsAsErrors>\n\t<WarningsNotAsErrors>612,618</WarningsNotAsErrors>

enter image description here

关于c# - 在 C# 中禁用 OBSOLETE 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10608309/

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