#c# #netcoreapp3.1
#c# #netcoreapp3.1
Вопрос:
Я получаю предупреждения CA1307 об использовании string.Replace(string, string?)
вместо string.Replace(string, string?, System.StringComparison)
(которые я получаю). Однако, когда я перехожу к строке для добавления (например) StringComparison.OrdinalIgnoreCase
, как intellisense, так и компиляция говорят, что перегрузки нет. Та же проблема возникает и для string.Contains()
.
Вот предупреждение:
ServicesTemplateManager.cs(16,14): warning CA1307: The behavior of 'string.Replace(string, string?)' could vary based on the current user's locale settings. Replace this call in 'RSPlatform.Mail.Services.Template.Template(string, string, RSPlatform.Mail.TemplateType)' with a call to 'string.Replace(string, string?, System.StringComparison)'. [C:<path><projectName>.csproj]
Вот пример строки кода:
content = content.Replace(CRLF, LSCRLF); // Insert LINE_SEPARATOR
Предлагаются только две перегрузки — варианты char и string (ни с параметром StringComparison)
Когда я нажимаю F12 на метод, строковые метаданные также показывают только две перегрузки, которые хранятся здесь, на моем компьютере:
%USERPROFILE%AppDataLocalTempMetadataAsSource15ed471edd80488c83ca4e3630c3149ea25468945e7847cd8450af15ed506852String.cs
Код находится в библиотеке классов со следующим .csproj:
<PropertyGroup>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<TargetFrameworks>net48;netcoreapp3.1;netstandard2.1</TargetFrameworks>
<RuntimeIdentifiers>win-x64</RuntimeIdentifiers>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
</PropertyGroup>
Любые указатели были бы благодарны. Спасибо
Комментарии:
1. .Проблема NETStandard, нечетное ограничение. Если вы не можете жить без этого, вам придется отключить предупреждение.
2. Спасибо @HansPassant, я задавался вопросом, было ли это что-то подобное.