5

Đầu tiên tôi sẽ bắt đầu với những gì tôi đang cố gắng để hoàn thành, sau đó tôi sẽ cung cấp chi tiết theo ngữ cảnh:Làm thế nào để thay đổi thư mục tập tin đầu ra dựa trên thiết bị

Khi tôi chọn Start Debugging, tôi muốn thư mục đầu ra thay đổi tùy thuộc vào thiết bị nào được kết nối qua Trung tâm thiết bị di động Windows. Làm rõ: Cài đặt từ chương trình thiết lập của chúng tôi hoạt động tốt, nhưng gỡ lỗi từ Visual Studio là những gì đang cho tôi vấn đề.

Tôi đang sử dụng Visual Studio 2008. Dự án là dự án Thiết bị thông minh được viết bằng C# dành cho Compact Framework 3.5 và nhắm mục tiêu Thiết bị máy tính bỏ túi Windows Mobile 5.0 (theo cài đặt dự án). Tôi đã thấy rằng khi tôi nhắm mục tiêu loại thiết bị này, nó hoạt động chính xác trên tất cả các phiên bản Windows Mobile mà chúng tôi hỗ trợ cùng với Windows CE 6. Mọi giải pháp được đề xuất sẽ phải hoạt động trên cả Windows Mobile và Windows CE.

Khi tôi đi vào dự án Thuộc tính và chuyển đến tab Thiết bị, nó sẽ hiển thị thư mục Tệp đầu ra: và đường dẫn cho đầu ra. Nếu tôi nhấp vào nút ... Tôi có thể thay đổi điều này thành mặc định khác hoặc thậm chí đặt nó vào Thư mục gốc và sau đó xác định đầy đủ đường dẫn chính xác mà tôi muốn làm Thư mục con. Trên hầu hết các thiết bị nếu tôi chỉ để nó ở (Device Default) hoặc chọn Program Files Folder từ danh sách sổ xuống, nó hoạt động tốt. Vấn đề là khi nó chạy trên thiết bị Windows CE mà chúng tôi hỗ trợ nó cần phải chạy từ một vị trí khác.

Giải pháp có thể:

Nhiều dự án Giải pháp: Có nhiều dự án cho các thiết bị khác nhau. Vấn đề với điều này là tôi không biết làm thế nào để làm điều đó mà không vi phạm nguyên tắc DRY cho một số tệp cần được đưa vào đầu ra và tôi không muốn phải chuyển qua lại giữa các dự án Bắt đầu khác nhau.

Xác định lại %CSIDL_PROGRAM_FILES% giải pháp: Thay đổi những gì %CSIDL_PROGRAM_FILES% có nghĩa là vì điều này có thể nằm trong đường dẫn đầu ra chỉ định nơi tệp chương trình. Tuy nhiên tôi không biết nếu điều này là có thể hoặc nơi để bắt đầu với cố gắng này. Tôi nghĩ có lẽ điều này sẽ được xác định trong registry của thiết bị, nhưng tôi không thể tìm thấy nó.

Giải pháp biến đường dẫn tùy chỉnh: Chọn Thư mục gốc và sau đó dưới Thư mục con bằng cách nào đó tham chiếu biến (có thể bằng cách bắt đầu và kết thúc bằng số %?) Trong đường dẫn mà tôi có thể thay đổi thành thứ tôi cần (có thể từ sau xây dựng hoặc trước khi triển khai (nếu có một điều như vậy) kịch bản). Tôi không biết nếu điều này là có thể hoặc nơi để bắt đầu với điều này.

Bất kỳ trợ giúp nào sẽ được đánh giá cao, cảm ơn!

EDIT:

Sau khi thực hiện một số việc đào bới, đoán tốt nhất của tôi là %CSIDL_PROGRAM_FILES% là một biến môi trường Windows CE. Tôi vẫn không biết liệu có thể tạo hoặc sửa đổi chúng hay không.

+1

Giá trị CSIDL (danh sách ID mục đặc biệt liên tục) là các hằng số được sử dụng để chỉ các vị trí thay đổi với các ngôn ngữ khác nhau hoặc các bản dựng hệ điều hành. Không thể thêm hoặc sửa đổi chúng. Những thứ bạn thấy trong Studio đang được chuyển sang API CoreCon, được đẩy sang thiết bị và sau đó ở phía thiết bị, chúng được dịch. – ctacke

+0

@ctacke Cảm ơn bạn đã chia sẻ kiến ​​thức chuyên môn của mình. Bạn có chắc chắn không có cách nào thay đổi cách thiết bị dịch các hằng số này? Công nghệ có liên quan gì vào thời điểm đó? Tôi biết đây là một cảnh quay dài và bạn đã nói điều đó là không thể, nhưng đôi khi nghe những câu hỏi từ một người ít hiểu biết hơn sẽ mở ra những quy trình suy nghĩ mới. –

Trả lời

0

Trước tiên tôi cố gắng sử dụng một biến môi trường trong hồ sơ dự án:

<DeploymentTool 
    ForceDirty="-1" 
    RemoteDirectory="$(ceRemoteDir)" 
    RegisterOutput="0" 
    AdditionalFiles="" 
/> 

Nhưng điều đó là không may chỉ được cập nhật khi bạn bắt đầu VS và không được cập nhật sau.

Tôi sẽ sử dụng tập lệnh triển khai tùy chỉnh bằng cách sử dụng miễn phí remote tools.

Sử dụng preg bạn sẽ có thể nhận ra các thiết bị khác nhau trong một kịch bản hàng loạt:

pregutl.exe hklm\Ident 

sẽ ví dụ cho:

[HKLM\Ident] 
Desc="" 
Name="CK7007121144066" 
OrigName="Pocket_PC" 
Restriction=dword:00000002 
Username="guest" 

trên một thiết bị và trên một tôi nhận được:

[HKLM\Ident] 
Desc="Intermec CN3 Device" 
Name="CN3A32110646073" 
OrigName="IntermecCN3" 
Restriction=dword:00000002 
Username="guest" 

Sẽ không khó để lọc trong tệp bat/cmd và sau đó sử dụng pput để triển khai n exe để dir khác nhau tùy thuộc vào truy vấn pregutl.

Tệp bat/cmd sau đó có thể được sử dụng thay vì triển khai VS dưới dạng Sự kiện sau xây dựng.

Có, tất cả điều này hơi phức tạp nhưng sẽ hoạt động.

+0

Tôi đã thử các công cụ đó trước khi đăng câu hỏi này. Tôi đã triển khai thành công đến đúng nơi, tuy nhiên, tôi cũng muốn gỡ lỗi từ Visual Studio. Tôi không quen với việc sử dụng các sự kiện hậu xây dựng, nhưng tôi sẽ tưởng tượng rằng ngay cả khi tôi có các tệp để triển khai đúng trong sự kiện sau khi xây dựng, Visual Studio cũng sẽ triển khai sau đó đến địa điểm sai và sau đó đính kèm trình gỡ lỗi cho bản sao chương trình khác thay vì bản sao tôi đã triển khai từ tập lệnh tùy chỉnh của mình. Điều này cũng sẽ có tác dụng phụ không mong muốn của việc triển khai mỗi khi tôi thực hiện một bản dựng. –

+0

Tôi cho rằng cách chính thức là có các cấu hình khác nhau. Cấu hình Debug_DeviceType1 cho loại thiết bị 1 và Debug_DeviceType2. Trong các cấu hình, bạn có thể chỉ định triển khai hardcoded và đường dẫn gỡ lỗi. Nếu một thiết bị được kết nối, bạn sử dụng cấu hình một và cho thiết bị kia bạn sử dụng cấu hình hai. Thay đổi cấu hình chỉ là một cú nhấp chuột trong thanh công cụ VS2008. - BTW: VS có thể được thiết lập để KHÔNG triển khai. Và bạn có thể sử dụng attach-to-remote trong Debug sau khi một exe đã được triển khai bằng tay. Nhưng sau đó bạn không thể gỡ lỗi khởi động của quá trình từ xa. – josef

+0

Việc chuyển đổi qua lại giữa các cấu hình khác nhau là giá chấp nhận được và không phải là xấu vì có nhiều dự án và thay đổi dự án nào là dự án khởi động mọi lúc. Làm thế nào tôi sẽ cấu hình VS để sử dụng một gỡ lỗi khác nhau và triển khai đường dẫn cho các cấu hình khác nhau? –

0

Nếu tôi hiểu bạn một cách chính xác, tôi thấy một vài tùy chọn bạn có thể thực hiện:

  1. Có nơi cài đặt của bạn những file thực thi trong thư mục mà bạn cần, hoặc

  2. Nơi tất cả dữ liệu bạn cần ở vị trí trung tâm (\Program Files\Data thư mục).

Tùy chọn đầu tiên, tự nó sẽ khó (không thể thông qua môi trường VS2008) để gỡ lỗi theo, mặc dù.

Bạn thậm chí có thể sử dụng kết hợp cả hai!

Bây giờ, tôi sẽ xem xét tất cả các công cụ đó josef được liên kết đến. Anh ấy lấy tất cả những đồ chơi thú vị ở đâu?

+0

Thực ra, tôi đã có một trình cài đặt cài đặt mọi thứ ở đúng vị trí. Những gì không làm việc tốt như vậy là gỡ lỗi từ VS. Bạn đã cho tôi một số ý tưởng mặc dù. Tôi có thể thiết kế nó để chạy từ một trong hai vị trí mặc dù có lợi thế để chạy nó từ vị trí khác và trình cài đặt sẽ vẫn đặt nó ở đó. Tuy nhiên tôi vẫn đang tìm kiếm một giải pháp tốt hơn như tôi muốn thử nghiệm trong cùng một môi trường nó sẽ được chạy trong sản xuất. –

1

Sử dụng cấu hình giải pháp/dự án khác nhau để sử dụng khác nhau đường dẫn đầu ra và gỡ lỗi cài đặt:

Trong VS kích chuột phải vào dung dịch và "Configuration Manager" enter image description here

Bên trong danh sách dưới đây "Active cấu hình giải pháp" nhấp vào enter image description here

Bây giờ hãy nhập tên mô tả mới và cài đặt nào có thể được sao chép cho cấu hình mới. Vui lòng bật "Tạo cấu hình dự án mới" và nhấp vào OK

Bây giờ bạn có giải pháp mới và cấu hình dự án mới. enter image description here

Nhấp OK để đóng trình quản lý cấu hình giải pháp.

Để thay đổi các cài đặt cho tất cả các cấu hình hoặc dự án cá nhân mà bạn phải nhấn chuột phải giải pháp và sau đó chọn Properties enter image description here

Bây giờ bạn có thể có các cài đặt khác nhau cho mỗi cấu hình.

thiết lập triển khai cho "Release_Device1" config: enter image description here

Nhưng khác nhau thiết lập triển khai cho "Thả" config: enter image description here

Bạn cũng có thể có các cài đặt gỡ lỗi khác nhau trong bộ cấu hình của bạn: enter image description here

Mọi thứ cần thêm?

+0

Điều này có vẻ rất hứa hẹn. Hiện tại tôi không có thiết bị tôi cần. Tôi sẽ có một lần nữa và sau đó tôi sẽ cố gắng này. Cảm ơn. –

+0

Vì một số lý do tôi không có các tùy chọn đó trong thuộc tính giải pháp. Cây bên trái chỉ có Cấu hình trong Thuộc tính cấu hình. Không có Deployment leaf trong Configuration Properties. Phiên bản nào của VS này? Tôi có VS 2008 Pro 9.0.3.0729.1 SP. –

+0

Tôi đã thử thay đổi cài đặt này từ các thuộc tính dự án với hy vọng rằng nó sẽ đặt nó cho mỗi cấu hình, nhưng nó vẫn giữ các cài đặt đó cho tất cả các cấu hình. –

Các vấn đề liên quan