Al final hemos encontrado un par de enlaces sobre un proyecto llamado tlbimp2 en CodePlex, y compilado nuestra propia versión modificada de tlbimp2:
- http://clrinterop.codeplex.com/discussions/208832
- http://clrinterop.codeplex.com/SourceControl/changeset/view/39798
que tomaron la código del proyecto tlbimp de 2. y lo modificó en la línea de 1. Hubo un par de problemas que tuvimos que solucionar:
En TlbImp.cs tuve explícitamente a montar el número de versión del archivo del resultado de FileVersionInfo.GetVersionInfo, ya que la propiedad estaba vacía FileVersion:
if (Options.m_strFileVersion == null)
{
// get the fileversion
var versionInfo =
FileVersionInfo.GetVersionInfo(Options.m_strTypeLibName);
Options.m_strFileVersion =
versionInfo.FileMajorPart
+ "." + versionInfo.FileMinorPart
+ "." + versionInfo.FileBuildPart
+ "." + versionInfo.FilePrivatePart;
}
En tlbimpcode.cs que tenía que cambiar:
AsmBldr.DefineVersionInfoResource(
strProduct,
strProductVersion,
strCompany,
strCopyright,
strTrademark);
a:
AsmBldr.DefineVersionInfoResource();
no se utilizarían los recursos personalizados
O.
Espero que esto ayude a alguien más con el mismo problema.
Una gran pregunta, pero ¿por qué exactamente necesitas esta habilidad? – sharptooth
Queremos mantener la misma versión de ensamblaje entre lanzamientos (porque el nuevo ensamblaje sigue siendo compatible con los clientes existentes), pero nos gustaría que nuestro instalador reemplazara una versión anterior del ensamblado con una nueva (por ejemplo, corrección de errores) (y el instalador usa FileVersion para esto). – dominic
Ya veo, eso es bastante razonable. – sharptooth