В настоящее время я изучаю 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