基于现有标准解决方案的Xamarin表单解决方案

问题描述 投票:0回答:1

[我正在寻找一种方法来扩展具有其自己的git存储库的工作标准Xamarin Forms解决方案以及另一个特定于客户的解决方案,应该有自己的项目作为解决方案的补充。

标准解决方案专案超人DROIDiOS应用程序(.net标准)核心(.net标准)

新解决方案应使用现有解决方案。客户解决方案添加现有项目(项目)超人DROIDiOS应用程序(.net标准)核心(.net标准)

当仅添加原始项目时,一切都会按预期进行。因此,如何将自定义项目和逻辑添加到新解决方案中。

我希望使用类似的方法将项目添加到客户解决方案。有些在启动期间注入或发现ICustomerProjectAdapter。我尝试过

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

但是这不起作用,CustomerProjectAdapter始终为null。

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

我们如何使用标准的Xamarin表单解决方案,并使用第二个存储库/第二个解决方案对其进行扩展,并进行某种形式的注入以使用额外的Project。

每个客户解决方案都将使用此过程。我不想将客户特定的代码添加到主存储库中。使用客户特定的配置或具有客户特定的部分在csproj文件中就可以了。在代码级别,如果将客户部分限制为单一注入点,则可以添加客户部分。

我还尝试使用预编译时脚本向MAIN cs.proj添加引用。在解决方案之间切换时,这会导致在Visual Studio中找不到错误。 。但是即使在编译时更改了csproj,发现/注入问题仍然没有解决。

我如何最好地解决这类问题?

c# xamarin.forms solution
1个回答
0
投票

因此,如果有人正在寻找这样的解决方案,我会在项目文件工作中获得条件。它很好地解决了问题。

对客户代码或项目的唯一折衷和引用仅限于一个项目,并且仅在csproj文件中。我们有一个fascade项目,负责返回驻留在另一个项目中的定制适配器实例。在构建时引用了该项目。

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>
© www.soinside.com 2019 - 2024. All rights reserved.