首页 > 解决方案 > 不同系统上的异常消息不同

问题描述

我偶然发现 PostSharp 的异常消息有一些奇怪的行为。

当调用具有Required 属性的方法时,我们有一个单元测试来检查ArgumentNullException。ReSharper 按预期工作并引发所需的异常。

但是,我们还会检查引发的异常的消息文本。在我的电脑上,我得到以下信息:

The parameter 'expression' is required.{Environment.NewLine}Parametername: expression

而在我们的 TFS 构建代理上,消息如下所示:

 The parameter 'expression' is required.{Environment.NewLine}Parameter name: expression

请注意,“参数”和“名称”之间有一个空格。

这是两台机器上完全相同的测试。两者都加载具有相同版本号的相同程序集。我还在两个系统上使用了本地构建的程序集,并且再次收到不同的异常消息。

标签: postsharp

解决方案


{Environment.NewLine} 之后的异常消息部分由 .NET Framework 代码附加。请参阅参考代码,例如:ArgumentException.cs

该字符串取自资源,我相信它取决于当前的文化和 .NET Framework 版本。因此,您需要检查机器上的文化设置(例如 en-US 与 en-UK)以及已安装的 .NET Framework 的确切版本。


推荐阅读