2011-02-11 2 views
24

Używam msbuild z wiersza poleceń z następującymi zasadami:msbuild -p: outputdir = c: mydir ignorowane

msbuild mysolution.sln -p:outputdir=c:\mydir 

Kiedy uruchomić tego, outputdir jest ignorowany, a domyślne określone w używany jest plik csproj.

Dokument MSDN dla tego narzędzia mówi, że powinienem móc zastąpić katalog kompilacji przy użyciu tego parametru. Co ja robię źle?

+1

Tutaj popełniłem błąd, używając opcji -p zamiast/p. Dokument MSDN dla MSBuild Command Line Reference (http://msdn.microsoft.com/en-us/library/ms164311.aspx) niepoprawnie odwołuje się do outputdir. – Mike

+0

Powinieneś zrobić swój komentarz i odpowiedź zamiast tego. –

Odpowiedz

61

Należy użyć OutputPath i ważniejsze trzeba zastosować odpowiednią składnię:

msbuild mysolution.sln /p:OutputPath=c:\mydir 
+0

Dziękuję za pomoc w tej sprawie. Myślę, że masz na myśli/p zamiast -p, kiedy odwołasz się do problemu składni. Właściwie używam/p w cmd.exe, ale mam tutaj błąd - za dużo PowerShell. Jeśli chodzi o ścieżkę wyjściową, martwy. Dzięki. – Mike

+0

To również zadziałało dla mnie .. Byłem użyteczny/P: outputdir zamiast/p: outputpath –

+2

Upewnij się, aby opuścić końcówkę '\'.'/ p: OutputPath = c: \ mydir' i NOT'/p: OutputPath = c: \ mydir \ ' –

2

Uważam, że powinieneś używać OutputPath.

8

Zauważ, że OutputPath jest preferowany w stosunku do OutDir. Dokumentacja była błędna, ale widzę, że w końcu to naprawili.

Co więcej, trudno jest dokładnie określić problem, ponieważ nie podano dokładnej ścieżki, którą podajesz jako parametr. Możliwe są dwa problemy, które można sobie wyobrazić:

  1. Opcja OutputPath określa ścieżkę do katalogu wyjściowego stosunku do katalogu projektu. Oznacza to, że nie można ustawić go na ścieżkę globalną, taką jak C:\mydir. Zakładam, że nie jest w stanie znaleźć określonej ścieżki, więc domyślnie jest ona podana w pliku projektu.

  2. Jeśli ścieżka, którą faktycznie określasz jako parametr, zawiera spacje, polecenie prawdopodobnie się nie powiedzie. Uważam, że musisz zawrzeć ścieżkę w cudzysłowach i dołączyć dodatkowy ukośnik odwrotny na końcu ciągu znaków.

+0

Dzięki za pomoc Cody. Dokument, który czytałem (MSBuild Command Line Reference for VS 2010: http://msdn.microsoft.com/en-us/library/ms164311.aspx) używa OutputDir. Powiedziałbym, że czytamy różne strony. Udało mi się również zbudować pomyślnie, używając bezwzględnego odwołania do katalogu, takiego jak c: \ mydir. – Mike

+0

@Mike: Takie rzeczy się zdarzają, gdy dokumentujesz dokładnie te same funkcje w wielu różnych miejscach. Nie jestem naprawdę pewien, czy mówisz, że 'OutputPath' nie działa dla ciebie? 'OutDir' * będzie * nadal działać. –

+2

GUYS. Nie ma parametru "OutputDir". Istnieją tylko 'OutputPath' i' OutDir'. Przestańcie dodawać do zamieszania. –