Próba zbudowania mojego projektu na serwerze kompilacji daje mi następujący błąd:
Microsoft (R) Build Engine Version 4.0.30319.1
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
Rozwiązałem ten problem kilka miesięcy temu, instalując Visual Studio 2010 na Build Server. Ale teraz konfiguruję nowy serwer od zera i chcę wiedzieć, czy jest jakieś lepsze rozwiązanie tego problemu.
<Import Project="..\Packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />
ścieżki$(VSToolsPath)
jako:<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" />
Odpowiedzi:
Aby odpowiedzieć na tytuł pytania (ale nie na pytanie o wynik, który otrzymujesz):
Skopiowanie następującego folderu z komputera dewelopera na serwer kompilacji rozwiązuje ten problem, jeśli są to tylko aplikacje internetowe
Usuń x86 zgodnie z tym, jak psuje się twoja kompilacja. Jeśli masz inne typy projektów, prawdopodobnie będziesz musiał skopiować cały folder msbuild.
źródło
Budowanie i publikowanie WAP nie jest obsługiwane, jeśli VS nie jest zainstalowany. Powiedziawszy to, jeśli naprawdę nie chcesz instalować VS, musisz skopiować wszystkie pliki
%ProgramFiles32%\MSBuild\Microsoft\
.Musisz także zainstalować narzędzie Web Deploy Tool . Myślę, że o to chodzi.
źródło
UPD: od VS2017 w Narzędziach do budowania występuje obciążenie, które całkowicie eliminuje ten problem. Zobacz odpowiedź @SOReader .
Jeśli nie chcesz niczego modyfikować na serwerze kompilacji i nadal chcesz, aby projekt budował się bezpośrednio poza kontrolą źródła, dobrym pomysłem może być poddanie wymaganych plików binarnych kontroli źródła. Musisz zmodyfikować sekcję importowania w pliku projektu, aby wyglądała następująco:
Pierwszy wiersz to rzeczywisty import z nowej lokalizacji, który jest względny do katalogu rozwiązania. Drugi to wyłączona wersja (
Condition="false"
) oryginalnej linii, która pozwala Visual Studio nadal uważać twój projekt za prawidłowy projekt aplikacji sieciowej (to jest sztuczka, którą robi sam VS 2010 SP1).Nie zapomnij skopiować
C:\Program Files (x86)\Microsoft\VisualStudio\v10.0\WebApplications
doBuildTargets
folderu pod kontrolą źródła.źródło
Obecnie, w 2017 r., Możesz zainstalować redisty aplikacji sieci Web za pomocą MSBuildTools. Wystarczy przejść do tej strony , która pobierze narzędzia MSBuild 2017, a podczas instalacji kliknij,
Web development build tools
aby zainstalować również te cele:Spowoduje to
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications
domyślną instalację brakujących bibliotekźródło
choco install visualstudio2017-workload-webbuildtools
.Microsoft.VisualStudio.Workload.WebBuildTools
mogą być instalowane za pomocą linii poleceń poprzez wywołanievs_BuildTools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools
. Dodaj,--passive
aby nie potrzebować interwencji użytkownika.Możesz także użyć pakietu NuGet MSBuild.Microsoft.VisualStudio.Web.targets , odwołując się do nich w swoich projektach Visual Studio, a następnie zmieniać odniesienia, jak sugeruje Andriy K.
źródło
W oparciu o ten post tutaj możesz po prostu pobrać pakiet redystrybucyjny powłoki Microsoft Visual Studio 2010 Shell (zintegrowane), a elementy docelowe zostaną zainstalowane.
Pozwala to uniknąć konieczności instalowania programu Visual Studio na serwerze kompilacji.
Właśnie wypróbowałem to teraz i mogę sprawdzić, czy to działa:
Przed:
Po instalacji:
[Buduje poprawnie]
Jest to oczywiście znacznie lepsze rozwiązanie niż instalowanie programu Visual Studio na serwerze kompilacji.
źródło
Najnowszy zestaw Windows SDK, jak wspomniano powyżej, oprócz „pakietu redystrybucyjnego powłoki Microsoft Visual Studio 2010 (zintegrowany)” dla Microsoft.WebApplication.targets i „Microsoft Visual Studio Team System 2008 Database Edition GDR R2” dla Microsoft.Data.Schema .SqlTasks.targets powinien zmniejszyć potrzebę instalacji programu Visual Studio 2010. Jednak instalacja VS 2010 może być w rzeczywistości mniej ogólna do pobrania, a na koniec mniej pracy.
źródło
Dodaj zależność za pomocą NuGet i ustaw parametr kompilacji
Cel: żadne zmiany / instalacje nie są konieczne w agentach kompilacji
Zastosowałem tu hybrydowe podejście do Lloyda , oparte na NuGet , oparte na rozwiązaniu zależności binarnych autorstwa Andrika.
Powód, dla którego chcę mieć możliwość dodawania nowych agentów kompilacji bez konieczności wstępnego konfigurowania ich za pomocą takich elementów.
[solution]\packages\MSBuild.Microsoft.VisualStudio.Web.targets.nn.n.n.n\tools\VSToolsPath\
W wersji 7 wykonałem następujące czynności. To może nie być konieczne, a na podstawie komentarzy zdecydowanie nie jest teraz potrzebne. Zobacz komentarze poniżej.
env.VSToolsPath
i ustaw go w folderze VSToolsPath; użyłem..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath
źródło
<Import Project="..\..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.12.0.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />
Podczas budowania na serwerze kompilacji / CI wyłącz import
Microsoft.WebApplication.targets
całkowicie, określając/p:VSToolsPath=''
. Zasadniczo spowoduje to, że warunek następującej linii będzie fałszywy:Oto jak to się robi w TeamCity:
źródło
Jeśli przeprowadzisz migrację programu Visual Studio 2012 do 2013, otwórz plik projektu * .csproj za pomocą programu edior.
i zaznacz element ToolsVersion znacznika „Project”.
Zmień wartość z 4,0 na 12,0
Od
Do
Lub Jeśli budujesz przy pomocy msbuild, po prostu określ właściwość VisualStudioVersion
Źródło rozwiązania
źródło
msbuild /p:Platform=x86 /p:VisualStudioVersion=12.0
Wygląda na to, że nowa wersja msbuild nie jest dostarczana z Microsoft.WebApplication.targets. Aby to naprawić, musisz zaktualizować plik csproj w następujący sposób:
1) Edytuj aplikację internetową csproj (prawy przycisk myszy). Znajdź sekcję csproj na dole dotyczącą narzędzi do budowania. Tak powinno tak wyglądać.
2) Musisz dodać jedną linię VSToolsPath poniżej znacznika VisualStudioVersion, aby tak wyglądało
Link referencyjny: https://alastaircrabtree.com/cannot-open-vs-2015-web-project-in-vs-2017/
źródło
To wszystko czego potrzebujesz. Tylko 103 MB. Nie instaluj wszystkiego
źródło
Znalazłem to na MS connect :
Jest to więc jedyna opcja, jaką mam na razie.
źródło
Moje rozwiązanie jest mieszanką kilku odpowiedzi tutaj.
Sprawdziłem serwer kompilacji, a Windows7 / NET4.0 SDK został już zainstalowany, więc znalazłem ścieżkę:
Jednak w tej linii:
$ (MSBuildExtensionsPath) rozwija się do C: \ Program Files \ MSBuild który nie ma ścieżki.
Dlatego stworzyłem dowiązanie symboliczne za pomocą tego polecenia:
W ten sposób $ (MSBuildExtensionsPath) rozwija się do prawidłowej ścieżki i żadne zmiany nie są potrzebne w samej aplikacji, tylko na serwerze kompilacji (być może można utworzyć dowiązanie symboliczne przy każdej kompilacji, aby upewnić się, że ten krok nie zostanie utracony i zostanie „udokumentowany” „).
źródło
Naprawiłem to, dodając
/p:VCTargetsPath="C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V120"
do
Build > Build a Visual Studio project or solution using MSBuild > Command Line Arguments
źródło
Wypróbowałem wiele rozwiązań, ale ostatecznie ta odpowiedź zadziałała dla mnie: https://stackoverflow.com/a/19826448/431522
Zasadniczo wymaga wywołania MSBuild z katalogu MSBuild, zamiast z katalogu Visual Studio.
Dodałem również katalog MSBuild do mojej ścieżki, aby ułatwić pisanie skryptów.
źródło
Każdy, kto przyjdzie tutaj na Visual Studio 2017. Miałem podobny problem i nie mogłem skompilować projektu po aktualizacji do 15.6.1. Musiałem zainstalować narzędzia MSBulild, ale błąd nadal występował.
Byłem w stanie rozwiązać problem, kopiując
v14.0
folder zC:\Program Files (x86)\MSBuild\Microsoft\VisualStudio
tego samego folderu, cov15.0
rozwiązało wszystkie błędy. Więc teraz moja struktura folderów wygląda jak poniżej, gdzie oba foldery zawierają tę samą zawartość.źródło
Jeśli używasz MSBuild, tak jak w przypadku serwera kompilacji, działało dla mnie:
Zmień następujące ustawienia:
do:
Moje polecenie Msbuild to:
*"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" solution.sln /p:Configuration=Debug /p:Platform="Any CPU"*
Mam nadzieję, że to komuś pomoże.
źródło
Jeśli próbujesz wdrożyć projekt za pomocą VSTS, problem może być związany z zaznaczeniem opcji „Hostowany kontener Windows” zamiast „Hostowany VS2017” (lub 18 itd.):
źródło
C:> msbuild "C: \\ DotnetCi.sln" / p: Configuration = Release / p: UseWPP_CopyWebApplication = true / p: PipelineDependsOnBuild = false
źródło
Miałem ten problem podczas tworzenia projektu SQL Server na potoku CI / CD. W rzeczywistości miałem go także lokalnie i nie udało mi się go rozwiązać.
Dla mnie zadziałało użycie zestawu MSBuild SDK , zdolnego do tworzenia pakietu aplikacji SQL Server Data-Tier Application (
.dacpac
) z zestawu skryptów SQL, co oznacza tworzenie nowego projektu. Chciałem jednak zachować projekt SQL Server, aby móc połączyć go z bazą danych na żywo za pomocą Eksploratora obiektów SQL Server w programie Visual Studio. Podjąłem następujące kroki, aby to uruchomić:.sql
skryptów bazy danych.Ustaw zawartość w
.csproj
następujący sposób:Wybrałem Sql140 jako wersję programu SQL Server, ponieważ korzystam z programu SQL Server 2019. Sprawdź tę odpowiedź, aby znaleźć mapowanie do używanej wersji.
Zignoruj projekt SQL Server podczas kompilacji, aby przestał się łamać lokalnie (buduje się w Visual Studio, ale nie działa na VS Code).
Teraz musimy tylko upewnić się, że
.sql
pliki są w projekcie SDK po jego zbudowaniu. Osiągnąłem to za pomocą prostej procedury PowerShell na potoku CI / CD, która kopiowałaby pliki z projektu SQL Server do projektu SDK:PS: Pliki muszą znajdować się fizycznie w projekcie SDK, w katalogu głównym lub w folderze, więc łącza do
.sdk
plików w projekcie programu SQL Server nie będą działać. Teoretycznie powinno być możliwe skopiowanie tych plików z warunkiem przed kompilacją, ale z jakiegoś niejasnego powodu nie działało to dla mnie. Próbowałem także mieć.sql
pliki w projekcie SDK i połączyć je z projektem SQL Server, ale łatwo przerwałoby to łącze za pomocą Eksploratora obiektów SQL Server, więc postanowiłem to również usunąć.źródło