MSBuild 构建的程序集无法注册,RegAsm (错误 RA000);与Visual Studio 2010完全相同
本文关键字:Visual Studio 2010 RA000 错误 程序集 构建 注册 RegAsm MSBuild | 更新日期: 2023-09-27 18:37:11
我有一个简单的C#项目,当使用MSBuild构建时,它会构建一个无法向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 构建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
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 工具失败。
提前谢谢你。
凯文·韦特
我正在使用 Jenkins,并且此工作继承了从另一个非常相似的工作复制的这个特定的平台设置表单(据我所知,这也可能是错误的理解)。
具有此PlatformTarget=x86
会使生成的程序集/.dll不可注册。无论是使用Register COM Interop
复选框,还是使用 RegAsm 工具。我怀疑这种污点.dll是想要的。
如果 MSBuild 使用这些 Jenkins 定义的命令行参数;则生成的.dll将不可注册。当然,Visual Studio 2010 构建版本没有这样做,因此构建成功......
-p:PlatformTarget=x86;Configuration=Release
更正以下内容并成功构建作业并创建 *.tlb 也很好!
-p:Configuration=Release
解决!