Регистрация библиотек DLL, на которые ссылаются COM, на build server

Мы разрабатываем приложение C #, которое ссылается на несколько COM-библиотек (например, AutoIT).

Я включаю все компоненты, на которые есть ссылки, из системы управления версиями, в стороннюю папку «Libs».

Проблема в том, что у COM dll нет свойства HintPath в файле .csproj, и я предполагаю, что они должны быть зарегистрированы вручную с помощью regsvr32 (или с помощью какого-либо сценария).

В настоящее время я пытаюсь создать сценарий MSBuild, который будет запускаться перед каждой сборкой, однако я не мог понять, следует ли мне вручную вызывать regsvr32.exe или использовать какую-то предопределенную задачу MSBuild?

В настоящее время это то, что Я использовал в качестве теста:

 <?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
  <ItemGroup>
    <MyAssemblies Include="D:\*.dll" />
  </ItemGroup>
  <Target Name="Build">
    <RegisterAssembly
      Assemblies="@(MyAssemblies)" >
    </RegisterAssembly>
  </Target>
</Project>

Это генерирует ошибки, что библиотеки DLL, которые я поместил в данную папку, не являются допустимыми библиотеками DLL.

Какое хорошее решение этой проблемы?

РЕДАКТИРОВАТЬ:

Проекты, которые ссылаются на COM-библиотеки, имеют что-то подобное в файле .csproj:

<COMReference Include="AutoItX3Lib">
      <Guid>{F8937E53-D444-4E71-9275-35B64210CC3B}</Guid>
      <VersionMajor>1</VersionMajor>
      <VersionMinor>0</VersionMinor>
      <Lcid>0</Lcid>
      <WrapperTool>tlbimp</WrapperTool>
      <Isolated>False</Isolated>
    </COMReference>

Это не включает путь подсказки, как другие управляемые сборки , поэтому на сервере сборки указанная DLL-библиотека COM не найдена.

При регистрации библиотеки COM dll на сервере сборки с помощью REGSVR32 сборка завершается успешно.

13
задан lysergic-acid 18 September 2011 в 15:49
поделиться