MAUI и библиотека классов .NET CoreC#

Место общения программистов C#
Ответить
Anonymous
 MAUI и библиотека классов .NET Core

Сообщение Anonymous »

Я только начал использовать MAUI. Я хочу иметь 3 проекта:
  • Приложение MAUI (.NET Core 8)
  • Общая библиотека классов ( Библиотека классов .NET Core 8)
  • Веб-API (.NET Core 8)
Общая библиотека классов содержит класс SearchOptions (TestApp.Shared.Dtos.SearchOptions), который представляет собой простой общедоступный класс со свойствами базового типа (int, string, bool и т. д.).
Веб-API В проекте есть контроллер с методом «Поиск», который принимает параметр типа «SearchOptions».
Теперь здесь кроется проблема: когда я пытаюсь использовать класс «SearchOptions» в MAUI, чтобы отправить его в HTTP-запросе, в зависимости от того, где я его использую, я получаю сообщение об ошибке, сообщающее, что ссылка не может быть найдена.
Если я использую его в /Platforms/Android/ Например, MainActivity.cs проект собирается нормально.
Если я создаю папку «Helpers» и класс SearchHelper (/Helpers/SearchHelpser.cs) и использую «SearchOptions» в этого класса, я получаю сообщение «ошибка CS0234: тип или имя пространства имен «Shared» не существует в пространстве имен «TestApp» (вам не хватает ссылки на сборку?)»
Мой вопрос это: Почему в одном месте он строится нормально, а в другом нет? Что мне не хватает? Есть ли лучший способ достичь того, что я пытаюсь сделать?
Спасибо
[EDIT]
Как я ответил на некоторые Из комментариев у меня уже есть ссылка на проект в моем приложении 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































[/EDIT]


Подробнее здесь: https://stackoverflow.com/questions/790 ... ss-library
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»