class Program
{
static string path = "C:\\Work\\6.70_Extensions\\NightlyBuild\\";
static void Main(string[] args)
{
var di = new DirectoryInfo("C:\\Work\\6.70_Extensions\\NightlyBuild");
foreach (var file in di.GetFiles("*", SearchOption.AllDirectories))
file.Attributes &= ~FileAttributes.ReadOnly;
var files = Directory.GetDirectories(path, "SASE Lab Tools.*");
foreach(var file in files)
Console.WriteLine(file);
foreach(var file in files.OrderByDescending(x=>x).Skip(7))
Console.WriteLine(file);
foreach(var file in files.OrderByDescending(x=>x).Skip(7))
Directory.Delete(file);
}
}
以上是我在VS2008 .net 3.5版中编写的代码。但是,当我将其传输到另一台具有.net 3.0版的计算机时,即使在相同的环境下也会发生错误。
错误:
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.
我没有在该机器上安装VS2008,我想知道我的代码是否与错误有关?我试图去msdn并研究Directory.GetDirectories(字符串,Searchpattern),只有这个出现在3.5
答案 0 :(得分:2)
在另一台机器上安装.NET 3.5 ...
错误消息不能更清楚:您将程序链接到.NET 3.5 DLL但未安装它们,因此您收到错误。
答案 1 :(得分:2)
它失败了,因为没有安装框架的v3.5,并且您的可执行文件引用了它包含的程序集以支持该代码段中的LINQ查询。安装框架(或更高版本)的v3.5或更改您的应用程序以定位较低版本的框架(这意味着您必须将LINQ查询重写为“普通”代码)
答案 2 :(得分:1)
您正在使用属于3.5版本框架的DLL。为了使其工作,您当然需要在客户端PC上使用此DLL。
答案 3 :(得分:1)
files.OrderByDescending(x=>x).Skip(7)
之类的代码使用LINQ,它位于System.Core中,安装有3.5及更高版本。因此,要么安装.NET Framework 3.5,要么(如果不能)用您自己的选择方法替换上面提到的代码段。
答案 4 :(得分:0)
您需要更改程序以使用.net 3.0(然后将GetDirectories替换为其他功能),或者在您想要使用程序的任何地方安装.net 3.5。