当我用MSBuild构建一个简单的C#项目时,它构建了一个不能用RegAsm注册的程序集(错误RA000)。MSBuild构建的程序集无法注册,RegAsm(错误RA000);完全相同.csProj与Visual Studio 2010创建有效的程序集?
使用Visual Studio 2010构建的完全相同的.csProj会成功创建有效的汇编和RegAsm寄存器?
我使用C:\windows\microsoft.net\framework64\v4.0.30319\msbuild.exe
两个构建(的MSBuild 4.0和Visual Studio 2010)正在做的管理员权限,那么注册权限已启用。
- 我正在寻求一种方法来解决/理解/调试 - 这令人沮丧的 异常。
- 可能是MSBuild 4.0我缺少一个修复/ SPx?
- 是否有工具来创建一个像文件(或其他.dll格式化程序)的地图,所以我可以比较两个 生成的程序集的差异? MSBuild中
输出RegAsm内置bTest.dll
:从Visual Studio 2010内置bTest.dll
RegAsm输出
Microsoft (R) .NET Framework Assembly Registration Utility 4.0.30319.1
Copyright (C) Microsoft Corporation 1998-2004. All rights reserved.
RegAsm : error RA0000 : Failed to load 'C:\test\bTest.dll' because it is not a valid .NET assembly
:
Microsoft (R) .NET Framework Assembly Registration Utility 4.0.30319.1
Copyright (C) Microsoft Corporation 1998-2004. All rights reserved.
Types registered successfully
Assembly exported to 'C:\test\bTest.tlb', and the type library was registered successfully
对于该bTest.csProj文件之上有Register COM interop
未选中,RegAsm作为后期制作步骤完成。
如果建立与Register COM interop
检查都做了,从而使能; Visual Studio 2010会正确生成bTest.tlb。但是,MSBuild确实而不是会生成bTest.tlb文件,并且生成的程序集仍然会因RegAsm 4.0工具失败。
预先感谢您。
凯文·韦特
您使用了哪个版本的regasm?如果您针对x86程序集使用Framework64版本,则会收到一条错误消息,指出“RegAsm:error RA0000:无法加载'YourLib.dll',因为它不是有效的.NET程序集”。使用x86版本,它会工作。 – timB33