Erro SideBySide com redirecionamento de ligação no serviço do Windows .net
Eu tenho um serviço do Windows .net que precisa carregar duas versões diferentes de um assembly. Ele é executado em uma caixa do servidor 2012 R2. Estou usando um redirecionamento de ligação em separado.config
arquivo carregado no app.config principal usando-o antes do fechamento</configuration>
nó (consulte o documento MSDN):
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<linkedConfiguration href="file://E:\my-service\runtime.config" />
</assemblyBinding>
Meu runtime.config contém o redirecionamento de ligação real:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="AutoMapper" publicKeyToken="be96cd2c38ef1005" culture="neutral" />
<codeBase version="0.4.0.126" href="AutoMapper.dll" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="AutoMapper" publicKeyToken="be96cd2c38ef1005" culture="neutral" />
<codeBase version="3.2.1.0" href="AutoMapper.3.2.1\AutoMapper.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Isso funciona bem até que o servidor seja reiniciado. Vemos isso no log de eventos após o início da máquina:
Activation context generation failed for "Service.exe".
Error in manifest or policy file "Service.exe.Config" on line 71.
The element assemblyBinding appears as a child of element configuration which is not supported by this version of Windows.
Então eu corri osxstrace.exe
ferramenta (conforme establogue) e obtenha esta saída:
=================
Begin Activation Context Generation.
Input Parameter:
Flags = 0
ProcessorArchitecture = AMD64
CultureFallBacks = en-US;en
ManifestPath = E:\my-service\Service.exe
AssemblyDirectory = E:\my-service\
Application Config File = E:\my-service\Service.exe.Config
-----------------
INFO: Parsing Application Config File E:\my-service\Service.exe.Config.
ERROR: Line 71: The element assemblyBinding appears as a child of element configuration which is not supported by this version of Windows.
ERROR: Activation Context generation failed.
End Activation Context Generation.
Se eu remover olinkedConfiguration
a partir do app.config principal, o serviço é iniciado (embora com erros diferentes). Posso adicioná-lo novamente e o serviço pode ser iniciado e interrompido corretamente até que a máquina seja reiniciada novamente.
Alguém sabe por quê isso aconteceria? E esse é o uso correto dolinkedConfiguration
?
ATUALIZAR
Após uma longa e produtiva conversa com o suporte da Microsoft, descobri que usando olinkedConfiguration
com um manifesto incorporado não é suportado (consulte o documento MSDN)
No entanto, parece haver um erro ao carregar a configuração de um arquivo externo. Eu levantei isso como umbug on connect.