Tôi đang sử dụng một số tệp .NET ESRI trong một số tập lệnh Python tùy chỉnh. Ví dụ: ESRI.ArcGIS.Geodatabase.dll
Trên máy phát triển của tôi, các DLL này nằm trong thư mục C: \ Program Files (x86) \ ArcGIS \ DeveloperKit10.0 \ DotNet .
Bây giờ tôi muốn triển khai các kịch bản cho một máy khác. Tuy nhiên, trừ khi người dùng có SDK ArcObjects cho .NET được cài đặt, các DLL này bị thiếu trong máy của họ.
Tệ hơn nữa, yêu cầu người dùng cài đặt SDK, có nghĩa là họ cũng cần cài đặt Visual Studio, đây là bản tải xuống 600 MB (đối với phiên bản Express miễn phí). Nếu họ không có Visual Studio, trình cài đặt ESRI sẽ không tiếp tục.
Vì vậy, các DLL này có nên được gói cùng với các tập lệnh (có thể gây ra sự cố tương thích nếu gói dịch vụ được thêm vào) hoặc có phương pháp triển khai dễ dàng hơn không?
Cập nhật :
Các DLL .NET hiện được cài đặt theo mặc định trong phiên bản 10 của ArcGIS. Chúng được đặt trong GAC (Global hội Cache). Bạn có thể thấy chúng trong Windows Explorer (trong Windows 7) trong C:\Windows\assembly
(không thực sự là một thư mục, nhưng bạn có thể xem những gì trong GAC). Nhìn vào các thuộc tính lắp ráp cho thấy DLL phải nằm trong một thư mục như C:\Windows\assembly\GAC_32\ESRI.ArcGIS.System\10.0.0.0__8fc3cc631e44ad86\ESRI.ArcGIS.System.dll
nhưng tệp này dường như không tồn tại.
Python cho .NET dường như bây giờ yêu cầu bạn sử dụng tên đầy đủ khi thêm một tham chiếu đến các DLL này. Nhìn vào mã nguồn của nó, có vẻ như trước đây nó đã sử dụng LoadWithPartialName để bạn có thể sử dụng mã dưới đây. Điều này bây giờ trả về một ngoại lệ FileNotFound.
import clr
clr.AddReference("ESRI.ArcGIS.System")
from ESRI.ArcGIS.System import *
Bây giờ có vẻ như bạn cần sử dụng như sau:
import clr
clr.AddReference("ESRI.ArcGIS.System, Version=10.0.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86")
from ESRI.ArcGIS.System import *