我们正在使用tlbimp生成互操作程序集。我们想在互操作程序集上同时标记一个文件版本和一个程序集版本。但是,tlbimp上的/asmversion选项似乎将它们都设置为相同的值。
有谁知道如何使用tlbimp在互操作程序集上设置不同的文件和程序集版本?
最佳答案
最后,我们在Codeplex上找到了一个有关名为tlbimp2的项目的链接,并编译了我们自己的tlbimp2修改版本:
我从2的tlbimp项目中获取了代码,并按照1的方式对其进行了修改。我们必须解决一些问题:
在TlbImp.cs中,由于FileVersion属性为空,因此我必须根据FileVersionInfo.GetVersionInfo的结果显式地汇编文件版本号:
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;
}
在tlbimpcode.cs中,我不得不切换:
AsmBldr.DefineVersionInfoResource(
strProduct,
strProductVersion,
strCompany,
strCopyright,
strTrademark);
至:
AsmBldr.DefineVersionInfoResource();
否则将不使用自定义资源。
希望这可以帮助其他遇到相同问题的人。
关于.net - tlbimp如何用于指定不同的文件和程序集版本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5455520/