postsharp - 不同系统上的异常消息不同
问题描述
我偶然发现 PostSharp 的异常消息有一些奇怪的行为。
当调用具有Required 属性的方法时,我们有一个单元测试来检查ArgumentNullException。ReSharper 按预期工作并引发所需的异常。
但是,我们还会检查引发的异常的消息文本。在我的电脑上,我得到以下信息:
The parameter 'expression' is required.{Environment.NewLine}Parametername: expression
而在我们的 TFS 构建代理上,消息如下所示:
The parameter 'expression' is required.{Environment.NewLine}Parameter name: expression
请注意,“参数”和“名称”之间有一个空格。
这是两台机器上完全相同的测试。两者都加载具有相同版本号的相同程序集。我还在两个系统上使用了本地构建的程序集,并且再次收到不同的异常消息。
解决方案
{Environment.NewLine} 之后的异常消息部分由 .NET Framework 代码附加。请参阅参考代码,例如:ArgumentException.cs
该字符串取自资源,我相信它取决于当前的文化和 .NET Framework 版本。因此,您需要检查机器上的文化设置(例如 en-US 与 en-UK)以及已安装的 .NET Framework 的确切版本。
推荐阅读
- highcharts - 尽管图例项单击已禁用,但单击 Highcharts 饼图呈现边框
- c# - 如何使用 Linq 检查 XML 中是否存在特定属性
- c# - 通过 Postman 发送 JSON + 文件
- javascript - 在异步函数中设置 const 状态
- javascript - 如何在 Firebase Firestore 的文档中检索和存储 doc.id?
- azure - Azure DevOps Pipeline Program 不包含适用于入口点的静态“Main”方法
- java - 如何在 Android Studio 中翻译按钮动画?
- geospatial - Geopandas geom_almost_equals 方法给出错误的输出
- java - 如何减小 Jar 文件的大小以进行更新或更新 Jar 文件的最佳方法是什么
- amazon-web-services - 让 EMR 集群在终止时终止其 EC2 实例