2013-08-04 12 views
7

na moim komputerze stworzyłem zmienną środowiskową systemu o nazwie 3DSMaxInstallDirectoryVS2010: Jak używać zmiennych środowiskowych w Post-Budowanie

W wierszu poleceń, jeśli dam

echo %3DSMaxInstallDirectory%Plugins\ 

uzyskać

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

W Visual Studio I wejść do sekcji post-build

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

Jednak na kompilacji otrzymuję

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

Wyniki w Google są mylące mix sugestie, że Visual Studio nie obsługuje EVS, Visual Studio robi EVS wsparcia, Visual Studio potrzebuje% ..% i Visual Studio potrzebuje $ (..) - i żaden z nich nie działa na moim komputerze.

Jaki jest poprawny sposób użycia mojej zmiennej środowiskowej w Visual Studio?

(Tak, katalog istnieje, a powód, dla którego nie chcę ustawić ścieżki jawnie, przygotowuję się do udostępnienia tego projektu, a każdy krok, który ktoś inny musi podjąć po pobraniu, a przed budowaniem jest kolejną barierą .)

+1

Czy uruchamiasz program Visual Studio jako administrator? –

+0

@JeanHominal, właśnie próbowałem, ale niestety to nie miało znaczenia. – sebf

+0

w vs2010 przy użyciu% var% działa dla mnie w post-build. – rene

Odpowiedz

2

Działa to dla mnie w ustawieniu "Kompilacja zdarzeń" po zakończeniu projektu.

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

ONLYME jest zmiennym środowiskowym w zmiennych użytkownika mojego profilu.

Pozostałe to warianty ogólnosystemowe.

ONLYME pozostaje puste, jeśli uruchomię VS2010 jako administrator, systemvars nadal będzie mieć wartości zgodnie z oczekiwaniami.

jestem na v2010 SP1

+0

Dziękuję na podstawie tego, że stwierdziłem, że "3DSMaxInstallDirectory" nie działa, ale "_3DSMaxInstallDirectory" robi. Uważam, że jest to spowodowane Visual Studio ucieczki "%" do "% 25" w csproj, który podczas parsowania staje się "% 253" i "DSMax ...". – sebf

0

Visual Studio nie prawidłowo kodować/odczytu "specjalnych" znaków w pliku konfiguracyjnym XML. Mogę go uruchomić zgodnie z oczekiwaniami, ręcznie usuwając polecenie jako adres URL (http://www.w3schools.com/tags/ref_urlencode.asp).

ECHO %CD% 

Wyniki w dzienniku wyjściowym:

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

Jednakże, używając URL ucieka w oknie proerties projektu wydaje się działać:

ECHO %25CD%25 
+0

Wydaje mi się, że kodowanie, którego brakuje, to po wpisaniu niestandardowego polecenia przez GUI (oczywiście musisz zakodować siebie, jeśli edytujesz plik .vcxproj). Jeśli chcesz głosować w dół; zostaw komentarz. Miałem ten problem i tak to naprawiłem. Edytuj: Wyjaśnienie wyników z/bez kodowania. – whitey04

2

'%' znak jest zarezerwowany przez MSBuild, tak musisz go zastąpić szesnastkową sekwencją specjalną %25, jak udokumentowano w MSDN.

copy "$(TargetDir)$(TargetName).*" "%253DSMaxInstallDirectory%25\Plugins" powinien faktycznie działać. Jednak edytor wiersza poleceń Visual Studio wyświetla go poprawnie, ale MSBuild błędnie interpretuje %253. Nie mogę stwierdzić, czy to błąd, czy funkcja, ale nie wolno uruchamiać nazwy zmiennej środowiskowej za pomocą cyfry.