Ich habe ein VS 2012-Webprojekt / SLN, das ich in TeamCity erstellen möchte. Es verwendet .NET 4.5, das auf TeamCity installiert ist.
Auf dem TeamCity-Server ist nur VS 2010 installiert .
Ich erhalte diese Fehlermeldung, wenn der Build ausgeführt wird:
C:\BuildAgent\work\d5bc4e1b8005d077\CUSAAdmin.Web\CUSAAdmin.Web.csproj(799, 3):
error MSB4019:
The imported project
"C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.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. Project CUSAAdmin.Web\CUSAAdmin.Web.csproj failed.
Project CUSAAdmin.sln failed.
Es wird versucht, Visual Studio 2012 (v11.0) zum Erstellen zu verwenden.
Ich habe das Set VisualStudioVersion sein 10 in der build.xml obwohl ??
<Target Name="BuildPackage">
<MSBuild Projects="CUSAAdmin.sln" ContinueOnError="false"
Targets="Rebuild"
Properties="Configuration=$(Configuration); VisualStudioVersion=10.0" />
Auch innerhalb des Projekts wird standardmäßig VS2010 verwendet
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath
Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
Antworten:
Eigentlich müssen Sie Visual Studio nicht auf Ihrem CI-Server installieren. Sie müssen nur einige Ordner von einem Entwicklungscomputer an denselben Speicherort auf dem CI-Server kopieren.
VS 2015:
VS 2013:
VS 2012:
VS 2010:
.NET 4.6:
.NET 4.5.2:
.NET 4.5.1:
.NET 4.5:
.NET 4.0.1:
.NET 4.0:
Sie können sie auch , wie Matt vorgeschlagen hat , in ein Unterverzeichnis Ihres Projekts kopieren und den
<MSBuildExtensionsPath32>
Speicherort in Ihrer MSBuild- Datei (normalerweise.csproj
oder.vbproj
) ändern .Sobald Sie dies getan haben, wird Ihr Projekt kompiliert. Sie sollten die VisualStudioVersion weiterhin explizit auf die von Ihnen verwendete festlegen, um sicherzustellen, dass sie richtig eingestellt ist.
quelle
Es stellt sich heraus, dass es wirklich einfach ist. Damit MSBuild VS2010 als Builder für eine von VS2012 in TeamCity erstellte Lösung ausführt, legen Sie einfach die Umgebungsvariable für die Buildkonfiguration wie folgt fest:
Hinweis In TeamCity muss VS2012 nicht installiert sein.
quelle
env.VisualStudioVersion
=11.0
gearbeitet. Vielen Dank!Alternativ können Sie die benötigten Build-Ziele aus c: \ Programme (x86) \ MSBuild in ein Unterverzeichnis Ihres Projekts (z. B. \ Build) kopieren, um sicherzustellen, dass die Struktur erhalten bleibt, und Folgendes zu Ihrem csproj hinzufügen:
<!-- redirect msbuild path so targets can be added to source control --> <PropertyGroup> <MSBuildExtensionsPath32>..\Build\</MSBuildExtensionsPath32> </PropertyGroup>
Wenn mein Projektstamm beispielsweise C: \ Dev \ MyProjSln \ MyProj ist
Persönlich bevorzuge ich diese Methode zum Verfolgen von Abhängigkeiten von Build-Zielen, da sie verhindert, dass Build-Server von undokumentierten Anforderungen an die Ordnerstruktur abhängig sind, und Ihre Abhängigkeiten in die Quellcodeverwaltung einbindet
quelle
Wie hier beschrieben :
MSBuild.Microsoft.VisualStudio.Web.targets
Ersetzen:
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
mit:
<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" Condition="true" />
Natürlich müssen Sie sicherstellen, dass die Versionen sowohl auf dem installierten Nuget als auch auf dem Pfad in Ihrem Fall übereinstimmen
<Import>
quelle
Ich bin völlig anderer Meinung als das Ändern der Projektdateien, da dies andere Entwickler betreffen könnte. Dies hat bei mir funktioniert, da der Ordner v11.0 im MS-Build-Ordner fehlte: 1) Erstellen Sie v111.
quelle
Erstens erfordert TeamCity nicht das Vorhandensein von Visual Studio einer Version zum Erstellen. Wenn ein Build-Schritt im Projekt mit MSBuild Runner konfiguriert wird, muss TeamCity wissen, welche Version von MSBuild verwendet werden soll. Dies ist eine Einstellung eines Erstellungsschritts. Die richtige MSBuild-Version muss in einer Build-Schritt-Konfiguration gemäß den auf einem Build-Computer installierten .NET-Tools ausgewählt werden. TeamCity verwendet diesen Wert, um den Standortpfad zu bestimmen, und legt beim Aufrufen von MSBuild eine Umgebungsvariable fest.
Das Problem mit Visual Studio 2012/2013 ist, dass es nur von TeamCity ab 8.1.0 unterstützt wird. Wenn Ihre TeamCity-Version also vor 8.1 liegt. Sie müssen auf die neueste Version 8.1.x aktualisieren, um eine Einstellung für MSBuild Tools 2013 anzuzeigen. Sobald Sie in den Einstellungen für den Erstellungsschritt eine geeignete MSBuild-Version ausgewählt haben, verschwindet das Problem. Weitere Informationen finden Sie hier: http://blog.turlov.com/2014/07/upgrade-teamcity-to-enable-support-for.html
quelle