Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Cria um indexador de recursos que pode criar ficheiros PRI compatíveis com ficheiros PRI existentes. Esta função é necessária apenas em cenários relativamente limitados; ver Observações para mais informações.
O COM deve ser inicializado (por exemplo, chamando o CoInitializeEx) antes de usar esta função.
Sintaxe
HRESULT HRESULT MrmCreateResourceIndexerFromPreviousSchemaFile(
_In_ PCWSTR projectRoot,
_In_ MrmPlatformVersion platformVersion,
_In_opt_ PCWSTR defaultQualifiers,
_In_ PCWSTR schemaFile,
_Inout_ MrmResourceIndexerHandle *indexer
);
Parâmetros
-
projectRoot [em]
-
Tipo: PCWSTR
O diretório raiz a partir do qual serão calculados alguns caminhos de ficheiro. Normalmente, este será o diretório raiz do seu projeto de origem, mas pode ser diferente. Consulte os recursos do ficheiro no MRM para mais informações.
-
Versão da plataforma [em]
-
Tipo: MrmPlatformVersion
A versão da plataforma (targetOsVersion) deve ser usada para o ficheiro de configuração gerado. A maioria dos chamadores deve simplesmente usar MrmPlatformVersion_Windows10_0_0_5
-
defaultQualifiers [em, opcional]
-
Tipo: PCWSTR
Uma lista de qualificadores padrão de recursos. Por exemplo, "language-en-US_scale-100". Para mais informações sobre qualificados, consulte Qualificados em MRM.
-
schemaFile [em]
-
Tipo: PCWSTR
O caminho para um ficheiro PRI existente cujo esquema precisa de corresponder, ou o caminho para um dump XML contendo o esquema do ficheiro PRI a corresponder. Consulte MrmDumpPriFile para informações sobre como criar um dump XML.
-
indexador [entrada, saída]
-
Tipo: MrmResourceIndexerHandle*
Um apontador para um handle indexador de recursos. Em caso de retorno bem-sucedido, isto conterá um handle para um indexador de recursos. Deve libertar o indexador através do MrmDestroyIndexerAndMessages depois de o usar.
Valor de retorno
Tipo: HRESULT
S_OK se a função tivesse sucesso, caso contrário algum outro valor. Use as macros SUCCEEDED ou FAILED (definidas em winerror.h) para determinar sucesso ou fracasso.
Observações
Esta função é equivalente ao MrmCreateResourceIndexer , exceto que o indexador criará ficheiros PRI que garantem incluir todos os nomes de recursos e índices do schemaFile fornecido, além de quaisquer novos recursos adicionados ao indexador. Isto garante que o novo ficheiro PRI é "compatível com o esquema" com o schemaFile original, mesmo que alguns recursos tenham sido omitidos.
Para a maioria dos cenários comuns, esta função não é necessária. Se alguma das seguintes condições se aplicar, não precisa de se preocupar em construir ficheiros PRI compatíveis com esquemas:
- Utiliza-se um único ficheiro PRI autónomo (que é a única opção suportada para aplicações não empacotadas); ou
- Reconstróis sempre os teus PRIs do pacote de recursos ao reconstruíres o teu PRI principal.
Esta função é necessária apenas num cenário relativamente limitado, nomeadamente:
- Tem um ficheiro PRI principal e um ou mais ficheiros PRI do pacote de recursos; e
- Estás a reconstruir o ficheiro PRI principal (mas não os ficheiros PRI do pacote de recursos); e
- Estás (ou podes estar) a remover um ou mais recursos do ficheiro principal do PRI.
Nesta situação, definir a referência schemaFile para o ficheiro principal PRI original garantirá que o novo ficheiro principal PRI é compatível com os pacotes de recursos existentes, garantindo que existem valores de índice provisórios para os recursos removidos.
Nota: O novo ficheiro PRI conterá todos os nomes de recursos (e índices) do ficheiro original, mas só conterá valores para os recursos explicitamente adicionados ao indexador. O novo ficheiro não herda (copia) os valores do ficheiro PRI original.
Exemplo
Assuma que o ficheiro PRI "original.pri" contém três recursos para inglês:
| Nome | Índice | Valor |
|---|---|---|
| ms-resource:///strings/test | 0 | "TestValue" |
| ms-resource:///strings/save | 1 | "Salvar" |
| ms-resource:///strings/delete | 2 | "Apagar" |
Agora considere o seguinte excerto de código (verificação de erros omitida):
// Create an indexer with the existing schema
MrmResourceIndexerHandle indexer{};
MrmCreateResourceIndexerFromPreviousSchemaFile(L"C:\\MyProject", MrmPlatformVersion_Windows10_0_0_5, L"language-en", L"original.pri", &indexer);
// Add values for "save" and "delete".
// Note that there is no "test" resource added, since we don't need it anymore.
MrmIndexString(indexer, L"ms-resource:///strings/save", L"Save", L"language-en");
MrmIndexString(indexer, L"ms-resource:///strings/delete", L"Delete", L"language-en");
// Save the file
MrmCreateResourceFile(indexer, MrmPackagingModeStandaloneFile, MrmPackagingOptionsNone, L"C:\\");
O novo ficheiro de recursos conterá o seguinte para Inglês:
| Nome | Índice | Valor |
|---|---|---|
| ms-resource:///strings/test | 0 | <nenhum> |
| ms-resource:///strings/save | 1 | "Salvar" |
| ms-resource:///strings/delete | 2 | "Apagar" |
Isto garante que os índices de recursos de save e delete permanecem iguais (1 e 2, respetivamente), de modo que os pacotes de recursos com versões localizadas de "Guardar" e "Eliminar" coincidam. Note que, se o código da aplicação ainda tentasse carregar o test recurso, falharia em tempo de execução (pelo menos em inglês), pois não existem candidatos definidos.
Para ilustrar porque isto é importante, vamos ver o que acontece se o novo ficheiro PRI não tivesse sido criado com o esquema base. Nesse caso, o novo ficheiro PRI conteria o seguinte:
| Nome | Índice | Valor |
|---|---|---|
| ms-resource:///strings/save | 0 | "Salvar" |
| ms-resource:///strings/delete | 1 | "Apagar" |
Agora, as pesquisas de recursos para delete (índice 1) recuperavam a cadeia correta "Delete" em inglês, mas noutras línguas recuperavam a versão localizada de "Save" (já que o índice 1 costumava ser o índice do save recurso). Isto levaria os utilizadores a ver UX rotulado como "Guardar" (na sua língua local) que realmente realizava uma operação de eliminação – um bug grave.
Requisitos
| Requisito | Valor |
|---|---|
| Cliente mínimo suportado |
Windows 10, versão 1803 [apenas aplicações de ambiente de trabalho] |
| Servidor mínimo suportado |
Windows Server [apenas aplicações de ambiente de trabalho] |
| Cabeçalho |
|
| Biblioteca |
|
| DLL |
|