2尝试构建Visual Studio程序时出现错误

时间:2016-12-15 16:26:49

标签: c# visual-studio visual-studio-2015

我在Visual Studio Community 2015中的c#程序的最后一部分,但我遇到了一个问题。

我正在使用此代码设置缓存限制:

private void DeleteOldFilesIfOverFolderLimit(string folderPath,
                                             long folderSizeLimit,
                                             long amountToDelete)
{
    var folder = new DirectoryInfo(folderPath);
    var files = folder.GetFiles();
    var folderSize = files.Sum(fi => fi.Length);
 
    if (folderSize > folderSizeLimit)
    {
        // Sort the list of files with the oldest first.
        Array.Sort(files,
                   (fi1, fi2) => fi1.CreationTime.CompareTo(fi2.CreationTime));
 
        var amountDeleted = 0L;
 
        foreach (var file in files)
        {
            amountDeleted += file.Length;
            file.Delete();
 
            if (amountDeleted >= amountToDelete)
            {
                break;
            }
 
        }
    }
}

以下是导致错误的类的完整代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Forge
{
    class Delete
    {
        private void DeleteOldFilesIfOverFolderLimit(string folderPath,
                                                long folderSizeLimit,
                                                long amountToDelete)
        {
            var folder = new DirectoryInfo(folderPath);
            var files = folder.GetFiles();
            var folderSize = files.Sum(fi => fi.Length);

            if (folderSize > folderSizeLimit)
            {
                // Sort the list of files with the oldest first.
                Array.Sort(files,
                           (fi1, fi2) => fi1.CreationTime.CompareTo(fi2.CreationTime));

                var amountDeleted = 0L;

                foreach (var file in files)
                {
                    amountDeleted += file.Length;
                    file.Delete();

                    if (amountDeleted >= amountToDelete)
                    {
                        break;
                    }

                }
            }
        }
    }
}

我不知道是否需要插入任何信息。但是对于我的特定程序(即文件夹路径,大小限制等)这可能是问题所在。

无论如何,我知道我需要将这个代码添加到一个类中,所以我去了“Program> Add Class”来创建一个类。然后我添加了代码。但是当我去构建程序时,会弹出这两个错误:

  

错误CS0246找不到类型或命名空间名称“DirectoryInfo”(您是否缺少using指令或程序集引用?) - 第15行

     

错误CS1579 foreach语句无法对类型'?'的变量进行操作因为'?'不包含'GetEnumerator' - 第27行

的公共定义

任何人都可以帮助我并告诉我我做错了什么吗?

(PS对不起,我是 super 这个整个编码的新东西。

2 个答案:

答案 0 :(得分:1)

在代码顶部使用此功能

using System.IO;

答案 1 :(得分:1)

我认为你可能有修复,用:

添加程序集依赖项
using System.IO

但我想指出使用匿名类型" var"会引起更多问题。如果您知道类型是什么,请声明它。这不仅会使您的代码更加冗长,而且还会避免缺少依赖项的问题(编辑器会告诉您而不是编译器)。

以下是您重构的代码:

DirectoryInfo folder = new DirectoryInfo(folderPath);
FileInfo[] files = folder.GetFiles();
long folderSize = files.Sum(fi => fi.Length);

if (folderSize > folderSizeLimit)
{
    // Sort the list of files with the oldest first.
    Array.Sort(files,
               (fi1, fi2) => fi1.CreationTime.CompareTo(fi2.CreationTime));

    long amountDeleted = 0L;

    foreach (FileInfo file in files)
    {
        amountDeleted += file.Length;
        file.Delete();

        if (amountDeleted >= amountToDelete)
        {
            break;
        }

    }
}