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

时间:2019-10-04 09:46:42

标签: c# xamarin.forms solution

我正在寻找一种方法,以使用自己的git存储库和另一个客户特定的解决方案来扩展工作正常的Xamarin Forms解决方案,而该解决方案应有自己的项目。

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

新解决方案应使用现有解决方案。 客户解决方案    添加现有项目(项目)     超人     DROID     iOS     应用程序(.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始终为空。

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

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

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

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

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

1 个答案:

答案 0 :(得分: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>