所以我最初遇到此问题中描述的问题:XmlSerializer giving FileNotFoundException at constructor
但是,我们刚刚从Visual Studio(VS)2013 Pro升级到VS 2019 Pro。现在,当我打开了所有的公共语言运行时(CLR)异常(引发时中断),包括System.IO.FileNotFoundException时,我没有中断该异常。我认为这与目标.NET Framework有关(我们也已升级到.NET 4.8)。
也就是说,我做了测试:
public static readonly XmlSerializer kXMLSerializerList = new XmlSerializer(typeof(List<string>));
结果:异常不中断
好,让我们尝试VS 2013
结果:XmlSerializer FileNotFoundException
因此它似乎不是.NET Framework版本的依赖项。 IDE依赖项?这让我感到困惑。还是C#版本依赖性?有人有任何线索吗?
这似乎是基于C#5.0和C#7.3之间的差异。
注意:\Xml\System\Xml\Serialization\Compiler.cs
的.NET 4.5.2和.NET 4.8参考源的比较显示,包括引发异常的行在内,没有任何区别。
感谢@Amy和其他人带领我朝着正确的方向前进。按照他们的指示,通过每个Visual Studio(VS)版本中的“生成”设置来检查语言版本:
[我发现VS 2013语言版本可以升级到C#5.0(我从“默认”更改为它以使用该特定版本)。
在VS 2019中,语言被设置为“根据框架版本自动选择”,并且该控件被禁用。 VS 2019的控制状态下的Why can't I select a different C# version?链接,对于所有.NET Framework版本,默认语言版本均为C#7.3。