Решение Xamarin Forms на основе существующего стандартного решения - PullRequest
0 голосов
/ 04 октября 2019

Я ищу способ расширить работающее стандартное решение Xamarin Forms с собственным репозиторием git с помощью другого решения, ориентированного на клиента, поэтому у него должен быть собственный проект в качестве дополнительного решения.

СТАНДАРТНОЕ РЕШЕНИЕ Проекты UWP DROID IOSПриложение (стандарт .net) CORE (стандарт .net)

Новое решение должно использовать существующее решение. РЕШЕНИЕ КЛИЕНТА ДОБАВЛЕНИЕ СУЩЕСТВУЮЩЕГО (проект) UWP DROID Приложение IOS (стандарт .net) CORE (стандарт .net)

Когда добавляются только исходные проекты, все работает как положено. ТАК, как добавить пользовательский проект и логику в новое решение.

Я надеялся добавить проект в решение Customer, используя что-то вроде этого. Некоторые вводят или обнаруживают ICustomerProjectAdapter во время запуска. Я попытался

[assembly: Xamarin.Forms.Dependency(typeof(CustomTemplateAdapter))]
namespace CustomTemplate
{
    public class CustomTemplateAdapter : ICustomerProjectAdapter
    {
        public string Test { get { return "HELLO WORLD - Custom Template";}  }
    }
}

, но это не сработало CustomerProjectAdapter всегда был нулевым.

var CustomerProjectAdapter = DependencyService.Get<ICustomerProjectAdapter>();

Как мы можем использовать стандартное решение Xamarin для форм и расширить его с помощью второго репозитория / второго решения и получитьнекоторая форма инъекции для использования дополнительного проекта.

Каждый клиентский вариант будет использовать этот процесс. Я не хочу добавлять специфичный для клиента код в основной репозиторий. Использование пользовательских конфигураций или наличие пользовательских разделов в файле csproj будет в порядке. На уровне кода также можно добавить раздел customer, если он ограничен одной точкой вставки.

Я также попытался добавить ссылки на MAIN cs.proj, используя сценарий до компиляции. это привело к не найденным ошибкам в Visual studio при переключении между решениями. ,Но даже при изменении csproj во время компиляции проблема обнаружения / внедрения все еще не была решена.

Как лучше всего решить проблему такого типа?

1 Ответ

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

Так что, если кто-то ищет такое решение, у меня есть условия в работе файла проекта. Это хорошо решает проблему.

Единственный компромисс и ссылка на код клиента или проекты ограничены одним проектом и находятся только внутри файла csproj. У нас есть фасадный проект, отвечающий за возврат экземпляра пользовательского adpater, который находится в другом проекте. На этот проект ссылаются во время сборки.

Компиляция и проверка синтаксиса внутри VS - все работы основаны на открытом на данный момент решении.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

<Choose>
  <When Condition="'$(SolutionName)' == 'MyCustomSolution' ">
    <ItemGroup>
      <ProjectReference Include="..\..\XPC_CustomRepos\CUSTOMERn\Customern.csproj">
        <Name>XYZ.CustomAdapter</Name>
      </ProjectReference>
    </ItemGroup>
  </When>

<!-- Repeat for each custom solution -->

  <Otherwise>
    <ItemGroup>
      <ProjectReference Include="..\STANDARD.Adapter\XYZ.Adapter.csproj">
        <Name>XYZ.Standard</Name>
      </ProjectReference>
    </ItemGroup>
  </Otherwise>  

</Choose>

</Project>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...