MSBuild: ошибка TlbImp начиная с обновления до VS 2010

начиная с обновления моего проекта к VS2010, включая использование MSBuild v4 вместо 3,5 (и не внесение любых других изменений), я получаю следующую ошибку сборки и не имею никакой подсказки, как зафиксировать его (журнал из CC.NET):

  <target name="ResolveComReferences" success="false">
   <message level="high"><![CDATA[C:\Programme\Microsoft SDKs\Windows\v7.0A\bin\TlbImp.exe c:\Assemblies\NMSDVDXU.dll /namespace:NMSDVDXLib /machine:X64 /out:obj\x64\Release\Interop.NMSDVDXLib.dll /sysarray /transform:DispRet /reference:c:\Assemblies\Bass.Net.dll /reference:c:\Assemblies\LogicNP.FileView.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Design.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Management.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:C:\WINDOWS\assembly\GAC\stdole\7.0.3300.0__b03f5f7f11d50a3a\stdole.dll ]]></message>
   <error code="TI0000" file="TlbImp"><![CDATA[A single valid machine type compatible with the input type library must be specified.]]></error>
   <warning code="MSB3283" file="C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets" line="1558" column="9"><![CDATA[Die Wrapperassembly für die Typbibliothek "NMSDVDXLib" wurde nicht gefunden.]]></warning>
   <message level="high"><![CDATA[C:\Programme\Microsoft SDKs\Windows\v7.0A\bin\TlbImp.exe c:\Assemblies\StarBurnX12.dll /namespace:RocketDivision.StarBurnX /machine:X64 /out:obj\x64\Release\Interop.RocketDivision.StarBurnX.dll /sysarray /transform:DispRet /reference:c:\Assemblies\Bass.Net.dll /reference:c:\Assemblies\LogicNP.FileView.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Design.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Management.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:C:\WINDOWS\assembly\GAC\stdole\7.0.3300.0__b03f5f7f11d50a3a\stdole.dll ]]></message>
   <error code="TI0000" file="TlbImp"><![CDATA[A single valid machine type compatible with the input type library must be specified.]]></error>
   <warning code="MSB3283" file="C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets" line="1558" column="9"><![CDATA[Die Wrapperassembly für die Typbibliothek "RocketDivision.StarBurnX" wurde nicht gefunden.]]></warning>
  </target>

Проблема: Должен быть указан единственный допустимый тип машины, совместимый с входной библиотекой типов.

Это только относится к сборке x64 моего проекта, x86 все еще хорошо работает. По-видимому, это пытается создать блок x64 interop из x86 DLL, расположенного в "C:\Assemblies". При выполнении команды TlbImp с x64 DLL, который расположен в другом каталоге, он хорошо работает. Однако я не знаю, как я могу настроить свой проект использовать различные ссылки COM для сборки x64 и x86. ОС, на которой компилируется проект, является WinXP x86. Здание хорошо работало при использовании VS2005 + MSBuild 3.5

Любая справка высоко ценилась бы.

Я пытался разработать обновленный проект с MSBuild v3.5, но это не работает также. Это жалуется на неизвестные коды NoWarn (вероятно, новый в 4,0).

11
задан floele 10 May 2010 в 16:04
поделиться

1 ответ

Думаю, вы обнаружите, что это связано с тем, что целевая сборка должна быть скомпилирована для того же типа процессора, что и сборка проекта.

Рассматривали ли вы возможность создания двух проектов, содержащих одинаковые файлы, а затем ссылки на x64 / x86-версии вашей целевой сборки?

Это может означать наличие двух открытых экземпляров VS, но, по крайней мере, все, что вам нужно сделать, это отредактируйте, затем переключитесь и создайте.

Проблема также может быть связана с тем, что вы пытаетесь создать 64-битный код в 32-битной ОС ... Я так не думаю, насколько мне известно, только запуск кода будет проблемой.

0
ответ дан 3 December 2019 в 11:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: