有效且存在问题的版本是
[DataSource("System.Data.Odbc", "Dsn=Excel Files;Driver={Microsoft Excel Driver (*.xls)};dbq=C:\\Data1.xls;defaultdir=.;driverid=790;maxbuffersize=2048;pagetimeout=5;readonly=true", "Sheet1$", DataAccessMethod.Sequential), TestMethod]
失败的版本显示在评论中,它是
[DataSource("System.Data.Odbc", "Dsn=Excel Files;Driver={Microsoft Excel Driver (*.xls)};dbq=D:\TestProjects\Coded2\DataFiles\Data1.xls;defaultdir=.;driverid=790;maxbuffersize=2048;pagetimeout=5;readonly=true", "Sheet1$", DataAccessMethod.Sequential), TestMethod]
显着的区别在于反斜杠\
在起作用的那个中加倍,因为它们是字符串中的转义字符。C# 将每个反斜杠加上以下字母作为转义序列。所以文件名D:\TestProjects\Coded2\DataFiles\Data1.xls
有\T
,\C
和\D
并且\D
编译器说其中一个或多个无法识别。
您还可以编写带有前导的 C# 字符串,@
这意味着反斜杠本身。所以如果写成非工作版本应该可以工作
[DataSource("System.Data.Odbc", @"Dsn=Excel Files;Driver={Microsoft Excel Driver (*.xls)};dbq=D:\TestProjects\Coded2\DataFiles\Data1.xls;defaultdir=.;driverid=790;maxbuffersize=2048;pagetimeout=5;readonly=true", "Sheet1$", DataAccessMethod.Sequential), TestMethod]