不要将文字作为本地化参数传递

Do not pass literals as localized parameters

我在对我的项目(Windows Phone 8.1 应用程序)进行代码分析时 运行 收到以下警告:

CA1303 Do not pass literals as localized parameters Method 'Common.TranslateError(String)' passes a literal string as parameter 'text' of a call to 'XDocument.Parse(String)'. Retrieve the following string(s) from a resource table instead.

这是我的方法:

Public Function TranslateError(ByVal exMessage As String) As XDocument

    Return XDocument.Parse("<Response><Exception><Message><" & XmlConvert.EncodeName(exMessage) & "></Message></Exception></Response>")

End Function

代码有效,自从添加代码以来我就不必解决这个问题,但是这个警告让我相信我做的事情不太正确。

我对此进行了一些研究并找到了 MSDN acticle CA1303: Do not pass literals as localized parameters 但是我无法引用 ResourceManager。如果我可以参考它,我仍然不明白为什么在将字符串传递给 XDocument.Parse.

时会出现问题

我想处理警告而不是抑制它。有没有人知道我该如何解决这个问题或者为什么会出现这样的警告?

如果您想复制,您需要将规则集配置为使用 Microsoft All Rules:

然后 运行 分析 select ANALYZE 从 Visual Studio 菜单中选择 运行关于...的代码分析

根据@RyanRoos 的建议,这段代码解决了警告:

Public Function TranslateError(ByVal exMessage As String) As XDocument

    Dim sb As New StringBuilder("<Response><Exception><Message><![CDATA[" & XmlConvert.EncodeName(exMessage) & "]]></Message></Exception></Response>")

    Return XDocument.Parse(sb.ToString())

End Function