我们正在使用tlbimp生成互操作程序集。我们希望在这些互操作程序集上加上文件版本和程序集版本。但是,tlbimp的/asmversion选项似乎将这两个版本号都设置为相同的值。
有没有人知道如何使用tlbimp设置不同的文件版本和程序集版本呢?
有没有人知道如何使用tlbimp设置不同的文件版本和程序集版本呢?
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;
}
AsmBldr.DefineVersionInfoResource(
strProduct,
strProductVersion,
strCompany,
strCopyright,
strTrademark);
to:
AsmBldr.DefineVersionInfoResource();
否则自定义资源将不会被使用。
希望这能帮助遇到相同问题的其他人。
仅使用tlbimp似乎很难做到这一点。您可能需要处理IL。您需要添加类似以下内容的内容:
.custom instance void [mscorlib]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = ( 01 00 0B 33 2E 35 2E 35 30 32 31 31 2E 31 00 00 ) // ...3.5.50211.1..
格式为01 NN NN SS1 ... SSN 00 00
。
NN NN是字符串的长度,SS包含表示版本的ASCII字节。