我正在Visual Studio 2012中编写一个C#程序,我遇到了问题。 这是我的代码片段:
Process proc = new Process();
proc.StartInfo.Verb = "runas";
proc.StartInfo.FileName = "C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\regasm.exe";
proc.StartInfo.Arguments = "Absolute\\path\\to\\File.dll /codebase /tlb";
proc.Start();
proc.WaitForExit();
MessageBox.Show("Exit code: "+proc.ExitCode);
proc.Close();
问题是,当我构建一个Debug二进制文件并运行它时,它的效果非常好。启动regasm.exe,注册DLL,生成.tlb文件,这都是花花公子。
但是当我运行Release二进制文件时,没有任何作用,MessageBox显示“退出代码:100”。我查了一下,但根本没有找到任何有用的东西。
在此处找到我的解决方案:http://objectmix.com/dotnet/320921-regasm-tlb-complaints-element-not-found.html
RegAsm.exe错误是这样的:
RegAsm : error RA0000 : Type library exporter encountered an error while
processing 'Ruby2net.IRuby2net, Ruby2net'. Error: Element not found.
看起来好像是因为我在程序中偶然使用了两次相同的GUID
。谢谢大家的时间。
答案 0 :(得分:3)
很多Google点击“regasm退出代码100”,只是看看。
Regasm 将显示错误消息,您无法看到它,因为控制台窗口会立即关闭。您需要保持打开状态,以便阅读错误消息。通过使用/ k选项运行cmd.exe(保留)来执行此操作。大致是:
var proc = new System.Diagnostics.Process();
proc.StartInfo.Verb = "runas";
proc.StartInfo.FileName = "cmd.exe";
proc.StartInfo.Arguments = "/k C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\regasm.exe \"Absolute\\path\\to\\File.dll\" /codebase /tlb";
proc.Start();
答案 1 :(得分:0)
事实证明这是一个如此愚蠢的错误......
问题是我在两个地方使用了相同的GUID,复制和粘贴时出现了一个简单的错误。谢谢大家的宝贵时间。