Мы разрабатываем приложение 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 сборка завершается успешно.