Dlaczego otrzymuję następujący błąd kompilacji?
C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ msbuild.exe C: \ Code \ EduBenesysNET \ EduBenesysNET \ EduBenesysNET.vbproj / t: opublikuj / p: Configuration = Release / p: Platform = AnyCPU / v: szczegółowe / p: PublishDir = "\\ BSIIS3 \ c $ \ DATA \ WEBSITES \ benesys.net \ benesys.net \ TotalEducationTest \" /p:InstallUrl="https://www.benesys.net/benesys.net/TotalEducationTest/ "/p:ApplicationVersion=1.0.1.198 / p: ProductName =" Total Education TEST "/ p: PublisherName =" BeneSys, Inc. " / p: UpdateRequired = "True" /p:MinimumRequiredVersion=1.0.1.198 Silnik kompilacji Microsoft (R) w wersji 3.5.30729.1 [Microsoft .NET Framework, wersja 2.0.50727.3603] Copyright (C) Microsoft Corporation 2007. Wszelkie prawa zastrzeżone. MSBUILD: błąd MSB1008: można określić tylko jeden projekt. Switch: Edukacja Aby uzyskać składnię przełącznika, wpisz „MSBuild / help”
Nie wiem, jak określono drugi projekt.
Czy jest gdzieś przechowywany w pliku projektu?
visual-studio
visual-studio-2008
msbuild
Gerhard Weiss
źródło
źródło
Odpowiedzi:
Okazuje się, że końcowy ukośnik we właściwości PublishDir ucieka przed końcowym cudzysłowem. Uniknięcie końcowego ukośnika rozwiązało mój problem.
W ten sposób możemy używać cudzysłowów dla ścieżek, które mają białe znaki we właściwościach, które MSBuild wymaga końcowego ukośnika.
Wiem, że to stary post, ale czuję, że muszę się tym z kimś podzielić :-)
źródło
ROZWIĄZANIE
Usuń cudzysłowy wokół ustawienia / p: PublishDir
tzn.
zamiast cytatów
Nie używaj cudzysłowów
Przepraszam, że nie wysłałem wcześniej mojego znaleziska. Właściwie musiałem ponownie zbadać, co należy zmienić. Kto by pomyślał, że usuwanie cytatów zadziała? Odkryłem to podczas przeglądania kompilacji współpracowników dla innego rozwiązania i zauważyłem, że nie ma ona cudzysłowów.
źródło
W Git Bash musiałem określić parametry za pomocą podwójnych ukośników, takich jak:
źródło
Ten problem pojawia się, gdy istnieje ścieżka lub właściwość zawierająca spację, która nie jest cytowana.
Wszystkie twoje nieruchomości i ścieżki są otoczone cytatem, to dziwne. Komunikat o błędzie wskazuje
Education
jako przełącznik, spróbuj usunąć,/p:ProductName="Total Education TEST"
aby sprawdzić, czy działa.źródło
MSBuild.exe C:\BuildAgent\work\4c7b8ac8bc7d723e\WebService.sln /p:Configuration=Release /p:OutputPath=bin /p:DeployOnBuild=True /p:DeployTarget=MSDeployPublish /p:MsDeployServiceUrl=https://204.158.674.5/msdeploy.axd /p:username=Admin /p:password=Password#321 /p:AllowUntrustedCertificate=True /p:DeployIisAppPath=Default WebSite/New /p:MSDeployPublishMethod=WMSVC
. Daje mi błądMSBUILD : error MSB1008: Only one project can be specified. Switch: WebSite/New
. Jaki może być problem?Default WebSite/New
Musisz umieścić qoutes wokół ścieżki i nazwy pliku.
Dlatego użyj programu MSBuild „C: \ Nazwa ścieżki \ Nazwa pliku.Exe” / [Opcje]
źródło
Spróbuj usunąć końcowy ukośnik odwrotny lub ukośnik na końcu ścieżki publikacji i adresu URL instalacji
Musisz trafić w specjalną sekwencję znaków za pomocą \ "i (lub) /", ale nie wiem wystarczająco dużo w cmd.exe, aby to rozgryźć.
Osobiście zawsze używam Powershell: jest o wiele bardziej przyjazny i potężny!
Mam nadzieję, że to pomoże!
źródło
W vs2012 po prostu spróbuj utworzyć definicję kompilacji „Kompilacja testowa” przy użyciu domyślnego szablonu TFS „DefaultTemplate .... xaml” (zwykle jest to jego kopia)
Zakończy się niepowodzeniem z typowym błędem wymagającym wyjaśnienia: „MSBUILD: błąd MSB1008: można określić tylko jeden projekt. Przełącznik: Działania”
Oczywiście gdzieś w domyślnym szablonie TFS
"
brakuje niektórych, więc msbuild otrzyma jako parametr katalog bez zmiany znaczenia, zawierający spacje, więc spowoduje to wiele projektów (?!)Dlatego NIGDY nie używaj spacji w nazwach definicji budowania TFS, dość smutnych i jednocześnie prostych
źródło
Kiedy pojawił się błąd, użyłem apostrofów wokół parametru hasła
/p:password='my secret'
złyi zmieniłem go tak, aby używał podwójnych cudzysłowów w celu rozwiązania problemu.
/p:password="my secret"
dobryPrawdopodobnie to samo dotyczy każdego parametru, który wymaga cudzysłowów dla wartości zawierających spację.
źródło
Dla mnie zapomniałem dodać cytat zamykający
/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)
do
/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)"
źródło
Dla przyszłych czytelników.
Otrzymałem ten błąd, ponieważ mój określony plik LOG miał w nim spację:
PRZED:
PO: (co go rozwiązało)
źródło
Jeszcze jedna przyczyna i rozwiązanie tego problemu: Sprawdź, czy nie umieściłeś spacji w niewłaściwym miejscu, tj. W parametrach; moja była
dotnet -c Release - o /home/some/path
(zwróć uwagę na odstęp między-
io
), patrzyłem na samą ścieżkę, która była poprawna i wyrzuciła mnie. Mam nadzieję, że to pomoże! (to było w Bash, chociaż powinno również dotyczyć Windows)źródło
To zadziałało dla mnie w argumencie TFS MSBuild. Zwróć uwagę na liczbę ukośników.
/ p: DefaultPackageOutputDir = "\\ Rdevnet \ Visual Studio Projects \ Insurance \"
źródło
Może to wystąpić, jeśli używasz domyślnego obszaru roboczego w Jenkins. Użyj niestandardowej lokalizacji obszaru roboczego bez spacji.
źródło
Jeśli używasz
MSBuild
zadania Azure DevOps, błąd może być spowodowany podwójną flagą konfiguracji. Upewnij się, że umieściłeś$(BuildConfiguration)
w określonym polu zamiast argumentów MSBuild jeden:źródło
Jeśli używasz
Any CPU
, może być konieczne umieszczenie go w pojedynczych cudzysłowach.Z pewnością podczas uruchamiania w pliku Dockerfile musiałem używać pojedynczych cudzysłowów:
źródło
Na wypadek, gdyby ktoś miał ten sam problem co ja, brakowało mi znaku „/” przed jednym z argumentów „/ p”. Nie bardzo jasne z opisu. Mam nadzieję, że to komuś pomoże.
źródło
Użyłem rozwiązania podanego na https://www.codingdefined.com/2014/10/solved-msbuild-error-msb1008-only-one.html i to rozwiązuje problem. Wszystko, co musimy zrobić, to sprawdzić spacje i '' (sprawdź odwrotne ukośniki) w poleceniu
źródło