Как же я могу ссылаться на библиотеку классов в моих проектах ASP.NET Core и Xamarin?
У меня есть и Xamarin Client, и Asp Core Web API, которые должны ссылаться на один и тот же проект, который будет использоваться в качестве Portable Class Library. Звучит просто, но я проведу вас через весь процесс. PCL - это просто модель, поэтому я могу использовать одни и те же классы для передачи JSON между ними).
Процесс: я создаю стандартный.NET PCL, а затем пытаюсь сослаться на него в своем проекте Xamarin. Xamarin не может добавить его, поскольку "проекты Portable Library могут ссылаться только на другие проекты Portable Library". Хорошо, не волнуйтесь. Я создам один из них и попробую.
Вместо этого я создаю dll "Библиотека классов (переносимая)". Я настраиваю проект так, чтобы он соответствовал тем же целям (одной из них является "ASP.NET Core 1.0"), что и мой проект Xamarin, и он отлично импортируется. Я могу использовать это прекрасно - ура!
Хорошо, так как dll "Class Library (Portable)" нацелена на ASP.NET Core 1.0, у меня не должно быть проблем с ссылками на нее в моем проекте Web API. Я добавляю его в свой проект. Json...
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
],
"dependencies": {
"TestClassLibraryPortableDll": {
"target": "project"
}
}
}
},
и все хорошо. НО, на самом деле я не могу сослаться на пространство имен из моего проекта WebAPI.
Это все, что я получил после того, как попробовал так много разных вещей. Стандартные библиотеки.NET, библиотеки классов ASP.NET Core, стандартные преобразования платформы.NET... все виды.
Я чувствую, что пропускаю очень простой, но очень важный шаг. Есть идеи?
Мой WebAPI будет развернут в Linux, если это поможет. Означает ли это, что я должен идти с новым netstandard? В лучшем случае кажется хитрым (и имеет очень мало документации).
Я также написал на форумах ASP.NET Core, и мне сказали это:
Если вам нужно настроить таргетинг на linux, то вам нужно настроить таргетинг на netstandard и, следовательно, использовать только библиотеки netstandard Вам нужно изменить свою модель (ДОЛЖНА быть нестандартной библиотекой) и добавить ее в зависимости.
И вот мой ответ:
Итак, я создаю NetStandard PCL в качестве моего класса Model. Это прекрасно относится к моему проекту WebAPI, но не к моему проекту Xamarin.
Это происходит ПОСЛЕ того, как я преобразовываю свой проект Xamarin в нестандартную библиотеку, как подробно описано в этом посте.
У кого-нибудь есть предложения? Мне может просто понадобиться набор классов, которые я могу включить в каждый из проектов (или, возможно, сохранить модели в моем проекте WebAPI и ссылаться на них из моего Xamarin, если это возможно), чтобы я мог двигаться дальше и получить некоторую работу сделанный.