У меня есть простой проект C#, когда он создается с помощью MSBuild, он создает сборку, которую нельзя зарегистрировать с помощью RegAsm (ошибка RA000).
Точно такой же .csProj, созданный с помощью Visual Studio 2010, создает действительную сборку, и RegAsm успешно регистрируется?
Я использую C:\windows\microsoft.net\framework64\v4.0.30319\msbuild.exe
Обе сборки (MSBuild 4.0 и Visual Studio 2010) выполняются с правами администратора, поэтому право на регистрацию включено.
- Я ищу способ решить/понять/отладить эту неприятную аномалию.
- Может ли быть исправление/SPx для MSBuild 4.0, которого мне не хватает?
- Есть ли инструмент для создания карты, подобной файлу (или другому форматеру .dll), чтобы я мог сравнить две полученные сборки на предмет различий?
Вывод RegAsm из MSbuild build 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
Вывод RegAsm из сборки Visual Studio 2010 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.
Заранее спасибо.
Кевин Уэйт