【问题标题】:CS1003 and CS1026 Syntax error when I trying to build尝试构建时出现 CS1003 和 CS1026 语法错误
【发布时间】:2020-11-24 09:10:49
【问题描述】:

我不确定为什么会出现此错误。我正在尝试在 Visual Studio 上构建它。我是新手,但我需要构建此代码。

有我的错误和代码:

(30,19): 错误 CS1003: 语法错误,'(' 预期

(30,88): 错误 CS1026: ) 预期

(31,19): 错误 CS1003: 语法错误,'(' 预期

(31,51): 错误 CS1026: ) 预期

(36,23): 错误 CS1003: 语法错误,'(' 预期

(36,63): 错误 CS1026: ) 预期

(37,23): 错误 CS1003: 语法错误,'(' 预期

(37,156): 错误 CS1026: ) 预期

namespace MelonLoader.AssemblyGenerator
{
    public static class DownloaderAndUnpacker
    {
        public static void Run(string url, string targetVersion, string currentVersion, string destinationFolder, string tempFile)
        {
            if (targetVersion == currentVersion)
            {
                Logger.Log($"{destinationFolder} already contains required version, skipping download");
                return;
            }
            
            Logger.Log($"Cleaning {destinationFolder}");
            foreach (var entry in Directory.EnumerateFileSystemEntries(destinationFolder))
            {
                if (Directory.Exists(entry))
                    Directory.Delete(entry, true);
                else
                    File.Delete(entry);
            }

            Logger.Log($"Downloading {url} to {tempFile}");
            Program.webClient.DownloadFile(url, tempFile);
            Logger.Log($"Extracting {tempFile} to {destinationFolder}");
            
/*line 30*/ using var stream = new FileStream(tempFile, FileMode.Open, FileAccess.Read);
            using var zip = new ZipArchive(stream);
            
            foreach (var zipArchiveEntry in zip.Entries)
            {
                Logger.Log($"Extracting {zipArchiveEntry.FullName}");
                using var entryStream = zipArchiveEntry.Open();
                using var targetStream = new FileStream(Path.Combine(destinationFolder, zipArchiveEntry.FullName), FileMode.OpenOrCreate, FileAccess.Write);
                entryStream.CopyTo(targetStream);
            }
        }
    }
}

【问题讨论】:

  • 您使用的是什么版本的 Visual Studio?
  • 第 30 行在哪里?
  • 您发布的代码中的哪一行对应于错误消息中的第 30 行?
  • 我想你没有使用 C# 8.0。用于 using 语句的语法需要 C# 8.0。因此,我对 Visual Studio 版本的问题。可能您需要启用 C# 8.0 或更高版本
  • 第 30 行:使用 var stream = new FileStream(tempFile, FileMode.Open, FileAccess.Read);第 31 行:使用 var zip = new ZipArchive(stream);第 36 行:使用 var entryStream = zipArchiveEntry.Open();第 37 行:使用 var targetStream = new FileStream(Path.Combine(destinationFolder, zipArchiveEntry.FullName), FileMode.OpenOrCreate, FileAccess.Write);

标签: c# build syntax-error


【解决方案1】:

这似乎是 C# 8 “使用声明”; 可能您有可用的最新编译器,但您的 csproj 配置为使用低级 C#; 可能编辑 cspoj 以更新或添加:

<LangVersion>8</LangVersion>

(或更高,在&lt;PropertyGroup&gt; 元素内)

会解决的。

如果你不能使用 C# 8,那么:

using (var stream = new FileStream(tempFile, FileMode.Open, FileAccess.Read))
using (var zip = new ZipArchive(stream))
{

    foreach (var zipArchiveEntry in zip.Entries)
    {
        Logger.Log($"Extracting {zipArchiveEntry.FullName}");
        using (var entryStream = zipArchiveEntry.Open())
        using (var targetStream = new FileStream(Path.Combine(destinationFolder, zipArchiveEntry.FullName), FileMode.OpenOrCreate, FileAccess.Write))
        {
            entryStream.CopyTo(targetStream);
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-21
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2012-03-01
    • 2023-03-07
    相关资源
    最近更新 更多