我有一个使用 MSBuild 构建的简单 C# 项目,它构建了一个无法使用 RegAsm 注册的程序集(错误 RA000)。
使用 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
:
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
从 Visual Studio 2010 构建的 RegAsm 输出bTest.dll
:
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 工具。
先感谢您。
凯文·韦特