我正在寻找一种方法,以使用自己的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,发现/注入问题仍然没有解决。
我如何最好地解决这类问题?
答案 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>