2013-08-04 53 views
7

Trên PC của tôi, tôi đã tạo ra một biến môi trường hệ thống gọi là 3DSMaxInstallDirectoryVS2010: Làm thế nào để sử dụng Environment Variables trong Post-Xây dựng

Tại dòng lệnh, nếu tôi cung cấp cho

echo %3DSMaxInstallDirectory%Plugins\ 

tôi nhận được

D:\Program Files\Autodesk\3ds Max 2011\Plugins\ 

Trong Visual Studio tôi nhập vào phần Post-Build

copy "$(TargetDir)$(TargetName).*" "$(3DSMaxInstallDirectory)Plugins\" 

Tuy nhiên trên build tôi nhận được

Error 4 The command "copy "C:\Users\Sebastian\Documents\Visual Studio 2010\Projects\MaxBridge\MaxBridgeImporterPlugin\bin\Debug\MaxBridgePlugin.*" "Plugins\" 
" exited with code 1. MaxBridgeImporterPlugin 

Các kết quả trên Google là một sự pha trộn khó hiểu gợi ý rằng Visual Studio không hỗ trợ EVs, Visual Studio không EVs hỗ trợ, Visual Studio cần% ..% và Visual Studio cần $ (..) - và không cái nào trong số đó có vẻ hoạt động trên máy tính của tôi.

Cách chính xác để sử dụng biến môi trường của tôi trong Visual Studio là gì?

(Có, thư mục tồn tại và lý do tôi không muốn đặt đường dẫn rõ ràng là tôi đang chuẩn bị chia sẻ dự án này và mỗi bước người khác phải thực hiện sau khi tải xuống và trước khi xây dựng là một rào cản khác .)

+1

Bạn có chạy Visual Studio làm quản trị viên không? –

+0

@JeanHominal, tôi đã thử nhưng tiếc là nó không tạo ra bất kỳ sự khác biệt nào. – sebf

+0

trong vs2010 sử dụng% var% hoạt động cho tôi trong quá trình xây dựng sau. – rene

Trả lời

2

Điều này phù hợp với tôi trong cài đặt Post-Build của 'Sự kiện xây dựng' của dự án.

echo %CodeContractsInstallDir% 
echo %DXSDK_DIR% 
echo "%ONLYME%" 

ONLYME là môi trường var trong biến người dùng trong tiểu sử của tôi.

Những người khác là Hệ thống rộng vars.

ONLYME vẫn trống nếu tôi khởi động VS2010 làm quản trị viên, systemvars vẫn có giá trị như mong đợi.

Tôi đang sử dụng V2010 SP1

+0

Cảm ơn bạn dựa trên điều đó tôi đã thấy rằng '3DSMaxInstallDirectory' không hoạt động, nhưng '_3DSMaxInstallDirectory' hiện. Tôi tin rằng do Visual Studio thoát '%' thành '% 25' trong csproj, khi phân tích cú pháp thành "% 253" & "DSMax ...". – sebf

0

Visual studio không mã hóa/giải mã các ký tự "đặc biệt" trong tệp cấu hình XML. Tôi có thể làm cho nó hoạt động như mong đợi bằng cách thoát lệnh bằng tay dưới dạng URL (http://www.w3schools.com/tags/ref_urlencode.asp).

ECHO %CD% 

Kết quả trong một bản ghi đầu ra:

Target "PreBuildEvent" in file "blahblahblah" 
    Task "Exec" 
     Command: 
     ECHO %CD% 
     C:\blah\blah\blah\Debug 
    Done executing task "Exec". 

Tuy nhiên, sử dụng URL thoát trong hộp thoại proerties dự án dường như làm việc:

ECHO %25CD%25 
+0

Tôi tin rằng mã hóa bị thiếu là khi bạn nhập lệnh tùy chỉnh thông qua GUI (tất nhiên bạn phải mã hóa chính mình nếu bạn chỉnh sửa tệp .vcxproj). Nếu bạn muốn bỏ phiếu xuống; để lại một bình luận. Tôi đã có vấn đề này và đây là cách tôi cố định nó. Chỉnh sửa: Làm rõ các kết quả có/không có mã hóa. – whitey04

2

Nhân vật '%' được bảo vệ bởi MSBuild, vì vậy bạn phải thay thế bằng trình tự thoát thập lục phân %25 như được ghi trong MSDN.

copy "$(TargetDir)$(TargetName).*" "%253DSMaxInstallDirectory%25\Plugins" thực sự nên hoạt động. Tuy nhiên: Trình soạn thảo dòng lệnh của Visual Studio hiển thị chính xác, nhưng MSBuild sau đó diễn giải sai %253. Tôi không thể cho biết đó là một lỗi hay một tính năng nhưng bạn không được bắt đầu tên biến môi trường của bạn với một chữ số.