Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何删除在DataDirectory中创建的.sdf文件_C#_Sql Server Ce - Fatal编程技术网

C# 如何删除在DataDirectory中创建的.sdf文件

C# 如何删除在DataDirectory中创建的.sdf文件,c#,sql-server-ce,C#,Sql Server Ce,我正在以编程方式创建一个SQL CE数据库文件,并希望确保每次都创建一个新的SQL CE数据库文件,因此我添加了delete方法。由于每个数据库文件都是在DataDirectory中创建的,因此我也想删除DataDirectory中的文件,但它给了我 “路径中的非法字符”错误 以下是我的代码: /* illegal characters in path */ File.Delete("|DataDirectory|\\Foo2Database.sdf"); string connString

我正在以编程方式创建一个SQL CE数据库文件,并希望确保每次都创建一个新的SQL CE数据库文件,因此我添加了delete方法。由于每个数据库文件都是在
DataDirectory
中创建的,因此我也想删除
DataDirectory
中的文件,但它给了我

“路径中的非法字符”错误

以下是我的代码:

/* illegal characters in path */
File.Delete("|DataDirectory|\\Foo2Database.sdf");

string connString = @"Data Source=|DataDirectory|\Foo2Database.sdf";
SqlCeEngine engine = new SqlCeEngine(connString);
engine.CreateDatabase();

如果应用程序是网络部署的,您可以使用它获取数据目录的路径

System.Deployment.Application.ApplicationDeployment.CurrentDeployment.DataDirectory
否则你可以用这个

System.AppDomain.CurrentDomain.BaseDirectory

| DataDirectory |
是连接字符串表示法,与文件系统路径无关

您可以使用如下代码删除该文件:

 var directoryName = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
 var fileName = Path.Combine(directoryName, "Foo2Database.sdf");
 File.Delete(fileName);
您可以通过AppDomain.CurrentDomain.GetData(“DataDirectory”)获取当前的
DataDirectory
如果您设置它


如果您有asp.net
DataDirectory
将是
Server.MapPath(“~/App\u Data”)

它是从.NET1.1开始存在的。虽然已经使用了“System.IO”名称空间,但我仍然必须使用do“System.IO.Path.GetDirectoryName”。这可能是因为您声明了另一个
路径
类。