- Приложение MAUI (.NET Core 8)
- Общая библиотека классов ( Библиотека классов .NET Core 8)
- Веб-API (.NET Core 8)
Веб-API В проекте есть контроллер с методом «Поиск», который принимает параметр типа «SearchOptions».
Теперь здесь кроется проблема: когда я пытаюсь использовать класс «SearchOptions» в MAUI, чтобы отправить его в HTTP-запросе, в зависимости от того, где я его использую, я получаю сообщение об ошибке, сообщающее, что ссылка не может быть найдена.
Если я использую его в /Platforms/Android/ Например, MainActivity.cs проект собирается нормально.
Если я создаю папку «Helpers» и класс SearchHelper (/Helpers/SearchHelpser.cs) и использую «SearchOptions» в этого класса, я получаю сообщение «ошибка CS0234: тип или имя пространства имен «Shared» не существует в пространстве имен «TestApp» (вам не хватает ссылки на сборку?)»
Мой вопрос это: Почему в одном месте он строится нормально, а в другом нет? Что мне не хватает? Есть ли лучший способ достичь того, что я пытаюсь сделать?
Поскольку я ответил на некоторые комментарии, у меня уже есть ссылка на проект в моем приложении MAUI. Без него он не работал бы в «Platforms/Android/MainActivity.cs», но работает... поэтому я предполагаю, что ссылка верна.
Я также знаю, как «использовать» работает. Даже при наличии полного имени класса, включающего полное пространство имен, он не находит его.
Вот код для каждого класса:
TestApp .Shared.Dtos/Search/SearchOptions.cs:
namespace TestApp.Shared.Dtos.Search
{
public class SearchOptions
{
public string Terms { get; set; } = string.Empty;
public SearchTypes SearchType { get; set; }
}
}
TestApp.Maui/Helpers/SearchHelper.cs (не компилируется)
using TestApp.Shared.Dtos.Search;
namespace TestApp.Maui.Helpers
{
internal class SearchHelper
{
public void Search()
{
var options = new SearchOptions
{
SearchType = SearchTypes.ByCar,
Terms = "Test Terms For Search"
};
}
}
}
TestApp.Maui/Platforms/Android/MainActivity.cs (компилируется)
using Android.App;
using Android.Content.PM;
using TestApp.Shared.Dtos.Search;
namespace TestApp.Maui
{
[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
public class MainActivity : MauiAppCompatActivity
{
public void TestMethod()
{
var options = new SearchOptions
{
SearchType = SearchTypes.ByCar,
Terms = "Test Terms For Search"
};
}
}
}
Вот полный текст ошибки:
Код серьезности Описание Состояние подавления строки файла проекта
Ошибка CS0234 Тип или имя пространства имен «Общий» не существует в пространстве имен «TestApp» (вам не хватает ссылки на сборку?) TestApp.Maui (net8.0-android) D:\Projects\TestApp\Code\TestApp.Maui\Helpers\SearchHelper.cs 1 Н/Д
Вот результат:
Сборка началась в 11:51...
1>------ Build started: Project: TestApp.Maui, Configuration: Debug Any CPU ------
1>D:\Projects\TestApp\Code\TestApp.Maui\Helpers\SearchHelper.cs(1,17,1,23): error CS0234: The type or namespace name 'Shared' does not exist in the namespace 'TestApp' (are you missing an assembly reference?)
1>Done building project "TestApp.Maui.csproj" -- FAILED.
1>TestApp.Maui -> D:\Projects\TestApp\Code\TestApp.Maui\bin\Debug\net8.0-android\TestApp.Maui.dll
1>TestApp.Maui -> D:\Projects\TestApp\Code\TestApp.Maui\bin\Debug\net8.0-maccatalyst\maccatalyst-x64\TestApp.Maui.dll
1>TestApp.Maui -> D:\Projects\TestApp\Code\TestApp.Maui\bin\Debug\net8.0-windows10.0.19041.0\win10-x64\TestApp.Maui.dll
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========
========== Build completed at 11:51 AM and took 02.217 seconds ==========
Вот файл проекта (чтобы показать наличие ссылки):
net8.0-android;net8.0-ios;net8.0-maccatalyst
$(TargetFrameworks);net8.0-windows10.0.19041.0
Exe
TestApp.Maui
true
true
enable
enable
TestApp.Maui
com.companyname.TestApp.maui
1.0
1
11.0
13.1
21.0
10.0.17763.0
10.0.17763.0
6.5
Подробнее здесь: https://stackoverflow.com/questions/790 ... ss-library
Мобильная версия