Как исправить ошибку CS1061 в консольном приложении C #? - PullRequest
0 голосов
/ 30 октября 2019

В настоящее время я изучаю C # и .NET, и сейчас я учусь делать пакет NuGet. Один из моих файлов настроен так:

using System.Text.RegularExpressions;

 namespace Packt.CS7
 {
public static class StringExtensions
{
    public static bool IsValidXmlTag(this string input)
    {
        return Regex.IsMatch(input, @"^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$");
    }

    public static bool IsValidPassword(this string input)
    {
        return Regex.IsMatch(input, "^[a-zA-Z0-9_-]{8,}$");
    }

    public static bool IsValidHex(this string input)
    {
        return Regex.IsMatch(input, "^#?([a-fA-F0-9]{3}|[a-fA-F0-9]{6})$");
    }
}
}

И мой Program.cs настроен так:

using System;
using System.Xml.Linq;
using static System.Console;
using Packt.CS7;

namespace Assemblies
{
class Program
{
    static void Main(string[] args)
    {
        Write("Enter a valid color valid in hex: ");
        string hex = ReadLine();
        WriteLine($"Is {hex} a valid color value: {hex.IsValidHex()}");

        Write("Enter a valid XML tag: ");
        string xmlTag = ReadLine();
        WriteLine($"Is {xmlTag} a valid XML tag: {xmlTag.IsValidXmlTag()}");

        Write("Enter a valid password: ");
        string password = ReadLine();
        WriteLine($"Is {password} a valid password: {password.IsValidPassword()}");
    }
}
}

Когда консольное приложение запущено, онодолжен вывести:

Enter a valid color value in hex: 00ffc8
Is 00ffc8 a valid color value: True
Enter a valid XML tag: <h1 class="<" />
Is <h1 class="<" /> a valid XML tag: False
Enter a valid password: secretsauce
Is secretsauce a valid password: True

Однако в консоли я получаю следующее:

Program.cs(14,60): error CS1061: 'string' does not contain a definition for 'IsValidHex' and no 
accessible extension method 'IsValidHex' accepting a first argument of type 'string' could be found 
(are you missing a using directive or an assembly reference?) 
[/Users/steelwind/HardWay/c#and.NET/Chapter07/Assemblies/Assemblies.csproj]

The build failed. Fix the build errors and run again.

Я считаю, что проблема заключается в том, что когда я открываю первый файл, когда оноткрыто в VSCode, говорит, что у каждого из классов есть «0 ссылок», что означает, что он не вызывается каким-либо образом в Program.cs. Однако я не уверен, почему.

Вот моя структура файлов:

 Assemblies:
 >Assemblies.csproj
  ^bin
   ^Debug
    ^netcoreapp3.0
   ^Release
    ^netcoreapp3.0
     >Assemblies
    >Assemblies.deps.json
    >Assemblies.dll
    >Assemblies.pbd
    >Assemblies.runtimeconfig.dev.json
    >Assemblies.runtimeconfig.json
    >Newtonsoft.Json.dll
 ^obj
 >Program.cs

Shared library:
 ^bin
  ^Bin
   ^Debug
     ^netstandard2.0
      >SharedLibrary.deps.json
      >SharedLibrary.dll
      >SharedLibrary.pbd
     ^netstandard3.0
    wtsegarsMyFirstPackage1.0.0.nupkg
   ^Release
    ^netstandard
     >SharedLibrary.dll
     >SharedLibrary.pbd
 ^obj
 SharedLibrary.csproj
   StringExtensions.cs

1 Ответ

0 голосов
/ 30 октября 2019

Работает (у меня).

А. Тест

Выход

// .NETCoreApp,Version=v3.0
Is 00ffc8 a valid color value: True
Is <h1 class="<" /> a valid XML tag: False
Is secretsauce a valid password: True

B. Что нужно сделать для отладки

Вы можете изменить namespace Packt.CS7 на namespace MyNewNamespace и изменить using Packt.CS7; на using MyNewNamespace; и посмотреть, скомпилируется ли это.

Если вы получите The type or namespace name 'Packt' could not be found (are you missing a using directive or an assembly reference?), это может означать, что ваша сборка приложения не ссылается на необходимую библиотеку / проект.

Тестовый код

using System;
using System.Text.RegularExpressions;
using Packt.CS7;

namespace Packt.CS7
{
    public static class StringExtensions
    {
        public static bool IsValidXmlTag(this string input)
         => Regex.IsMatch(input, @"^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$");

        public static bool IsValidPassword(this string input)
          => Regex.IsMatch(input, "^[a-zA-Z0-9_-]{8,}$");

        public static bool IsValidHex(this string input)
          => Regex.IsMatch(input, "^#?([a-fA-F0-9]{3}|[a-fA-F0-9]{6})$");
    }
}

namespace SixSixSix
{
    class Program
    {

        static void Main(string[] args)
        {
            string hex = "00ffc8";
            Console.WriteLine($"Is {hex} a valid color value: {hex.IsValidHex()}");

            string xmlTag = @"<h1 class=""<"" />";
            Console.WriteLine($"Is {xmlTag} a valid XML tag: {xmlTag.IsValidXmlTag()}");

            string password = "secretsauce";
            Console.WriteLine($"Is {password} a valid password: {password.IsValidPassword()}");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...