Erro no loading de Views

Causa provável - View (cshtml) com resources erradas ou não geradas;
Identificação da origem do problema
- Localizar a View em questão em 'Product>\Host\Views\
Correção 1 (resources) - No módulo da View, executar os Text Templates (.tt) referentes a Localization; - Compilar novamente o projeto Domain.Entities do módulo; - Executar Elevation / Nuget / Replace Assemblies in Local Repository;

Correção 2 (cshtml) - Caso o problema seja uma resource que já não existe ou foi substituída, executar a Text Template View.ttm do projeto Host; - Copiar a view em questão ('view'.cshtml) para a respetiva pasta no produto (manualmente ou com script powershell);

Dessincronização de modelos
Campos novos ou alterados de uma entidade não ficam disponíveis/atualizados em (ex.): - Services Model - Resource, List Operation, Service Operation - Presentation Model – View, List Operation
Causa provável
Uma ou mais entidades foram alteradas no Entities Model e/ou Services Model e não foi feita a sincronização para o Presentation Model;
Correção
- Garantir que o json do Entites Model e/ou Services Model foi transformado;

- Services Model – no menu de contexto selecionar Synchronize All Columns Information
- Presentation Model – no menu de contexto selecionar consoante o caso:
- Operations (Editor) -> Synchronize All Operations Information
- Operations (List) -> Synchronize All Create Actions and List Views
- Operations (Extension) -> Synchronize Captions For All Extensions

Atributos de Entidades e Interfaces em módulos dependentes
Problema
• As propriedades de uma Entidade foram adicionadas/removidas/alteradas e estão referenciadas noutro módulo dependente;
• As propriedades de uma Interface foram adicionadas/removidas ou alterado algum atributo e estão referenciadas noutro módulo dependente;
Solução
Vamos tomar como exemplo um módulo base (FinancialCore) e um módulo dependente (Accounting). Para qualquer uma das anteriores alterações se reflectir no módulo dependente, existem 2 opções.
Opção 1 Check-in das alterações. Requisitar build do módulo base e de seguida do módulo dependente;
Opção 2(*) Para evitar o pedido de builds, efetuar os seguintes passos: 1. Executar a TextTemplate (.tt) referente ao EntitiesModel do módulo base (FinancialCore).

- Copiar o ficheiro .json respetivo para a pasta correspondente do módulo dependente (Accounting)

- Executar os TextTemplates (todos) no módulo base por forma a gerar novamente as entidades e as suas novas ou alteradas propriedades;

-
Compilar o projeto do módulo base (FinancialCore);
-
Executar Elevation / Nuget / Replace Assemblies in Local Repository;
-
Garantir, no projeto Models do módulo dependente (Accounting), que as referências para o módulo base (FinancialCore) estão a apontar para o path correto (…/packages/…).
-
Por vezes a cache no Visual Studio não permite um refresh automático: fechar o VS, e voltar a abrir no modelo de Entidades (EntitiesModel);
-
Por fim, verificar se as novas propriedades da entidade ou da interface estão disponíveis no módulo dependente (Accounting):


UI Rules – Parent e ParentModel
Parent
Na definição de uma UI Rule por vezes é necessário referenciar propriedades de entidades que são do tipo Master/Detail. A notação correta nestes casos é:

ParentModel
Quando é necessário referenciar propriedades de uma VIEW parent (e.g. JournalEntryLine), para executar uma UI Rule sobre a representação de uma propriedade (e.g. financialAccount) de uma VIEW MODAL (detalhe de linha).

UI Rules vs API
As regras presentes nas UI Rules são aplicáveis somente do lado cliente. No entanto, podem conter alguma lógica de negócio que é importante identificar e aplicar sob forma de Custom Validation nos Managers. Isto garante uniformidade com os requests via API.
Um exemplo concreto: Módulo: Accounting Entidade: JournalEntryLine
UI Rule

Validation

Atenção: evitar na medida do possível esta duplicação de Regras (UI Rules) e respetivas Custom Validations. Deve ser dada preferência à Custom Validation.
AssemblyInfo não atualizadas
Se os ficheiros AssemblyInfo de um módulo não estiverem a ser atualizados com a versão correta da build, devem ser seguidos os seguintes passos para poder executar localmente:
- Alterar todas as AssemblyInfo no módulo com a versão correta e gravar;
- Compilar a solução
- Fazer Check out do nuget.config no produto
- Adicionar LocalPackages às package sources: Package Manager Console > Clicar na roldana das definições > Inserir os LocalPackages

- Fazer Update dos packages a apontar para os LocalPackages Menu ELEVATION > NuGet > Update Packages to Latest Version > selecionar LocalPackages

- Fazer restore dos packages na consola (Package Manager Console)
- Se houver código no módulo diferente do da última build, compilar o módulo e através do menu ELEVATION > NuGet > Replace Assemblies in Local Repository...
- Correr o produto.