Chúng tôi đang phát triển một ứng dụng C# tham khảo một vài thư viện COM (ví dụ: AutoIT).Đăng ký COM tham chiếu DLL trên máy chủ xây dựng
Tôi bao gồm tất cả các thành phần được tham chiếu trong điều khiển nguồn, trong thư mục "Libs" của bên thứ 3.
Vấn đề là COM dll không có thuộc tính HintPath trong tệp .csproj và tôi giả sử chúng phải được đăng ký theo cách thủ công bằng cách sử dụng regsvr32 (hoặc sử dụng tập lệnh sắp xếp).
Tôi hiện đang xem xét việc tạo tập lệnh MSBuild sẽ chạy trước mỗi lần xây dựng, tuy nhiên tôi không thể tìm ra liệu tôi có nên tự gọi regsvr32.exe hay sử dụng một số tác vụ MSBuild được xác định trước không?
Hiện nay, đây là những gì tôi đã attmpted như một thử nghiệm:
<?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>
này tạo ra lỗi các file DLL tôi đã đặt trong thư mục nhất định là không hợp lệ DLLs.
Giải pháp tốt cho vấn đề này là gì?
EDIT:
Các dự án tham khảo COM dlls có một cái gì đó tương tự như sau trong file 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>
này không bao gồm bất kỳ đường dẫn gợi ý như hội đồng quản lý khác, vì vậy trên một máy chủ xây dựng , Dll COM tham chiếu không được tìm thấy.
Khi đăng ký dll COM trên máy chủ xây dựng bằng REGSVR32, quá trình xây dựng thành công.
Tôi có cả hai loại thư viện và các hội đồng interop kiểm tra vào kiểm soát nguồn của tôi (Git). Tham khảo interop là không đủ mặc dù. Đầu ra của Tlbimp là gì? tôi thay vì làm điều đó như là một phần của quá trình xây dựng chứ không phải lên phía trước, vì khi nâng cấp build env, tôi có thể sao chép tất cả các script và mở rộng đến nhiều máy chủ hơn và có tất cả logic được lưu trữ ở đó mà không có các bước điều kiện tiên quyết –
Đầu ra của Tlbimp là lắp ráp interop. Tôi không thể làm bất cứ điều gì với "là không đủ", bạn sẽ phải mô tả các lỗi xây dựng bạn nhận được tốt hơn. –
tôi đã cập nhật câu hỏi ban đầu của mình. Interop dll tồn tại trong thư mục "dependencies", tuy nhiên không có liên kết giữa tệp .csproj và tệp này, do đó, bản dựng không chọn tệp này. Trên envinronment dev của tôi, điều này hoạt động tốt như tôi đã cài đặt gói phần mềm ban đầu (ví dụ AutoIt), tuy nhiên trên máy chủ xây dựng này không được cài đặt và do đó việc xây dựng không thành công mà không thực hiện thêm một số bước trước khi biên dịch .. –