Visual Studio 2017 Erweiterung - VSToolsPath nicht funktioniert
Bin ich die Aktualisierung von einer alten Visual-Studio-Erweiterung für VS 2017. Es kompiliert Geldstrafe von Visual Studio und msbuild in debug und release auf meinem lokalen Rechner.
Dies ist die msbuild-Befehlszeile die ich benutze:
msbuild VxCop.sln /p:ToolsHome=C:\ProgramData\chocolatey\bin /p:Configuration=Release /p:Platform="Any CPU"
Doch auf der build-Maschine (TFS-Build-2010) aufrufen msbuild.exe mit dem gleichen Befehl Linie versagt dieser Fehler
Um dieses Problem zu beheben, bin ich versucht zu geben VSToolsPath. Ich habe versucht, verschiedene Dinge wie die änderung der VSToolsPath Eintrag in die .csproj (das scheint nicht berücksichtigt zu werden, da dies zu tun, hatte keine Wirkung) und auch übergabe auf der Kommandozeile:
msbuild VxCop.sln /p:ToolsHome=C:\ProgramData\chocolatey\bin /p:Configuration=Release /p:Platform="Any CPU" /p:VSToolsPath=Packages\Microsoft.VSSDK.BuildTools.15.1.192\tools\
Bewirkt dies einen sehr seltsamen Fehler:
CopyFilesToOutputDirectory:
Copying file from "obj\Release\SymCop.dll" to "bin\Release\SymCop.dll".
SymCop -> H:\src\tools\VisualStudioExtensions\Main\VxCop\source\SymCop\bin\Release\SymCop.dll
Copying file from "obj\Release\SymCop.pdb" to "bin\Release\SymCop.pdb".
Done Building Project "H:\src\tools\VisualStudioExtensions\Main\VxCop\source\SymCop\SymCop.csproj" (default targets).
Done Building Project "H:\src\tools\VisualStudioExtensions\Main\VxCop\VxCop.sln" (Build target(s)) -- FAILED.
Done Building Project "H:\src\tools\VisualStudioExtensions\Main\VxCop\build.proj" (default targets) -- FAILED.
Build FAILED.
0 Warning(s)
0 Error(s)
Die eigentliche Erweiterung-Projekt, nicht erscheinen in der log überhaupt, und es ist keine, weißt du, Fehler. Aber die bauen gibt als fehlgeschlagen, ist der Rückgabewert ungleich null ist, und die vsix-Projekt scheint nicht gebaut werden (seine Ausgabe fehlt)
Ich hoffe, jemand hat einige Vorschläge
Dank
Edit:
Für diejenigen, die dies Lesen, in die Zukunft, das problem schien zu sein, dass es eine <Import>
weiter unten in der gleichen Datei, die nicht egal über meinen update auf $(VSToolsPath)
.
Ändern, dass import-behoben:
<Import Project="$(SolutionDir)\packages\Microsoft.VSSDK.BuildTools.15.1.192\tools\VSSDK\Microsoft.VsSDK.targets"
/>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bekam ich das gleiche Ergebnis, als Sie auf der Grundlage Ihrer Skripte. Nach der Installation des NuGet-Paket -
Microsoft.VSSDK.BuildTools
im Projekt, derMicrosoft.VSSDK.BuildTools.props
importiert werden, die in project die Datei, öffnen Sie das Projekt-Datei, finden Sie etwas weiter untenImport
:Dann öffnen Sie diese props-Datei, können Sie folgenden Hinweis Skripts snippet:
In diesem Fall NuGet-Paket überschreiben Sie den Wert
VSToolsPath
mit$(ThisPackageDirectory)\tools
. So MSBuild wird überspringen legen Sie die Wert-Einstellung in der nächste Schritt in der Projekt-Datei:Weil NuGet haben bereits den Wert
$(VSToolsPath)
, den Wert vonCondition="'$(VSToolsPath)' == ''"
wäre False. Darüber hinaus können Sie hinzufügen, ein Ziel, zu überprüfen, ob der Wert gesetzt ist, wie:Finden Sie hier den Wert:
Zusammenfassung oben, den Wert von
VSToolsPath
richtig importiert wurden, brauchen wir nicht an der Befehlszeile.Nach eingehender Untersuchung, fand ich den Grund für die vorherigen Fehler "MSB4226: Das importierte Projekt "(...)\VSSDK\Microsoft.VsSDK.Ziele" wurde nicht gefunden." ist, dass MSBuild-Eigenschaft "VisualStudioVersion" nicht auf den build-server.
Siehe unten link zur detail-info Gebäude ein VSIX-Erweiterung mit Visual Studio 2017 Build-Tools:
Also um den Fehler zu beheben "MSBuild4226", sollten Sie übergeben Sie die visual studio-version auf der Kommandozeile:
Nach der Verwendung dieses Befehls Zeile, die den Fehler MSBuild-4226 gelöst wurde.
Hoffe, das hilft.