Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az alábbi eljárások segíthetnek diagnosztizálni a Visual Studio-projekt buildelési problémáit, és szükség esetén létrehozhat egy naplót, amelyet elküldhet a Microsoftnak vizsgálat céljából.
A rendszer figyelmen kívül hagy egy tulajdonságértéket
Ha egy projekttulajdonság egy adott értékre van állítva, de a tulajdonságnak nincs hatása a buildre, kövesse az alábbi lépéseket:
Nyissa meg a Visual Studio fejlesztői parancssorát, amely megfelel a Visual Studio verziójának.
Futtassa a következő parancsot a megoldás elérési útjának, konfigurációjának és projektnevének értékeinek helyettesítése után:
MSBuild /p:SolutionDir="c:\MySolutionDir\";Configuration="MyConfiguration";Platform="Win32" /pp:out.xml MyProject.vcxprojEz a parancs létrehoz egy "előre feldolgozott" MSBuild projektfájlt (out.xml). A fájlban kereshet egy adott tulajdonságot, hogy lássa, hol van definiálva.
A tulajdonság utolsó definíciója az, amit a build felhasznál. Ha a tulajdonság kétszer van beállítva, a második érték felülírja az elsőt. Az MSBuild emellett több menetben értékeli ki a projektet:
- Tulajdonságcsoportok és Importok
- ItemDefinitionGroups
- ItemGroups
- Targets
Ezért a következő sorrendben:
<PropertyGroup>
<MyProperty>A</MyProperty>
</PropertyGroup>
<ItemGroup>
<MyItems Include="MyFile.txt"/>
</ItemGroup>
<ItemDefinitionGroup>
<MyItems>
<MyMetadata>$(MyProperty)</MyMetadata>
</MyItems>
</ItemDefinitionGroup>
<PropertyGroup>
<MyProperty>B</MyProperty>
</PropertyGroup>
A MyMetadata értéke a MyFile.txt elem számára a build során B-re van kiértékelve (nem A és nem üresen).
Az inkrementális build több feladatot végez el, mint amennyit kellene.
Ha az MSBuild szükségtelenül újraépít egy projektet vagy projektelemet, hozzon létre egy részletes vagy bináris buildnaplót. A naplóban megkeresheti a feleslegesen létrehozott vagy lefordított fájlt. A kimenet a következőképpen néz ki:
Task "CL"
Using cached input dependency table built from:
F:\test\Project1\Project1\Debug\Project1.tlog\CL.read.1.tlog
Outputs for F:\TEST\PROJECT1\PROJECT1\PROJECT1.CPP:
F:\TEST\PROJECT1\PROJECT1\DEBUG\PROJECT1.OBJ
Project1.cpp will be compiled because F:\TEST\PROJECT1\PROJECT1\PROJECT1.H was modified at 6/5/2019 12:37:09 PM.
Outputs for F:\TEST\PROJECT1\PROJECT1\PROJECT1.CPP:
F:\TEST\PROJECT1\PROJECT1\DEBUG\PROJECT1.OBJ
Write Tracking Logs:
Debug\Project1.tlog\CL.write.1.tlog
Ha a Visual Studio IDE-t használja (részletes kimeneti ablak beállításával), a Kimeneti ablak megjeleníti annak okát, hogy az egyes projektek miért nem naprakészek.
1>------ Up-To-Date check: Project: Project1, Configuration: Debug Win32 ------
1>Project is not up-to-date: build input 'f:\test\project1\project1\project1.h' was modified after the last build finished.
Részletes napló létrehozása
- Nyissa meg az Eszközök>beállításai panelt, és bontsa ki a Minden beállítás>projekt és megoldás>összeállítása és futtatása szakaszt.
- Nyissa meg az Eszközök>beállításai párbeszédpanelt, és bontsa ki a Projektek és megoldások>buildelése és futtatása szakaszt.
Használja a legördülő listákat, és állítsa be az MSBuild projekt build kimeneti részletességét és az MSBuild projekt buildelési naplófájl részletességi beállításait a Részletes értékre.
A felső vezérli a kimeneti ablakban megjelenő build részletességét, míg a második a buildeléskor az egyes projektek köztes könyvtárában létrehozott
{projectname}.logfájl részletességi szintjét vezérli.A Visual Studio fejlesztői parancssorából adja meg az alábbi parancsok egyikét, és helyettesítse a tényleges elérési utat és konfigurációs értékeket:
MSBuild /p:Configuration="MyConfiguration";Platform="x86" /fl MySolution.slnvagy
MSBuild /p:/p:SolutionDir="c:\MySolutionDir\";Configuration="MyConfiguration";Platform="Win32" /fl MyProject.vcxprojA rendszer létrehoz egy
MSBuild.logfájlt abban a könyvtárban, amelyből az MSBuild parancsot futtatta.
MSBuild bináris naplók megadása vizsgálathoz
Az MSBuild képes egy részletes bináris naplófájl rögzítésére. Ha buildelési problémát tapasztal, és bináris naplót tud adni, a napló hasznos lehet a probléma kivizsgálásához.
Azonban tisztában kell lennie azzal, hogy milyen típusú információkat rögzít a bináris napló, hogy biztosan ne ossza meg véletlenül a kívántnál többet. A bináris napló szinte mindent rögzít, amit a buildel, beleértve a projektfájlok tartalmát és az általuk importált fájlokat (például .props és .targets), a build során futtatott összes feladatot, valamint a bemenetet és kimenetet, valamint az adott MSBuild munkamenetben elért környezeti változókat. Általában nem tartalmazza a lefordított forrásfájlok tartalmát, de rögzíti a teljes nevüket és elérési útjukat.
Megjegyzés:
Egyes buildkörnyezetek környezeti változókkal teszik elérhetővé a titkos kulcsokat. A bináris naplók megosztása előtt győződjön meg arról, hogy nem tesz közzé API-jogkivonatokat vagy más fontos titkos kulcsokat.
Bináris naplók rögzítése parancssori buildekhez
Bináris naplót úgy hozhat létre, hogy a -bl paramétert megadja az MSBuild (MSBuild.exe vagy dotnet build) számára. A létrehozott .binlog fájl tartalmát az MSBuild Structured Log Viewer használatával vagy a böngészőben az Élő strukturált naplómegjelenítő használatával ismerheti meg. Az MSBuild nem rögzít adatokat a böngészőben megtekintett bináris naplókból.
Példák
dotnet build -bl
dotnet build -bl:SpecificStep.binlog
MSBuild.exe -bl:ServiceRelease.binlog -p:Configuration=Release
További információ a bináris naplókról.
Bináris naplók rögzítése a Visual Studióban
A naplók rögzítése minden MSBuild-híváshoz:
A MSBUILDDEBUGENGINE környezeti változót állítsa be '1'-re, és (opcionálisan) állítsa be MSBUILDDEBUGPATH egy meglévő célmappára a rögzített naplók tárolásához. Ezután indítsa el a Visual Studio-t ugyanabból a parancssorból a környezet beállításainak átvételéhez.
SET MSBUILDDEBUGENGINE=1
SET MSBUILDDEBUGPATH=C:\MSBuildReproLogs
devenv.exe MySolution.sln
$env:MSBUILDDEBUGENGINE = 1
$env:MSBUILDDEBUGPATH="C:\MSBuildReproLogs"
& "devenv.exe" MySolution.sln
Az MSBuild bináris naplók ezután egy környezeti változóval MSBUILDDEBUGPATH megadott helyre lesznek rögzítve (vagy alapértelmezés szerint MSBuild_Logs az aktuális mappa almappájába vagy %temp%a hozzáférési jogosultságok alapján).
Megjegyzés:
A naplók minden MSBuild-meghíváshoz (beleértve a tervezési idő buildjeihez) rögzítve vannak, és a mappában maradnak a régebbiek eltávolítása nélkül , így a naplófájlok száma gyorsan nőhet. Javasoljuk, hogy csak a vizsgálandó probléma reprodukálásának rövid időtartamára állítsa be az opt-in környezeti változót (bár érthető, hogy egyes nemdeterminisztikus problémákhoz több reprodukciós kísérletre lehet szükség).
Bináris MSBuild napló létrehozása a Project System Tools bővítmény használatával
Ezt az útmutatót a Project System Tools adattárában találja a binlogok Visual Studióban való rögzítéséhez.
Töltse le és telepítse a Project System Tools bővítményt.
A bővítmény telepítése után néhány új elem megjelenik azEgyéb Windows> menüben.
Válassza a Megtekintés>Egyéb ablakok>Buildnaplózás lehetőséget a Buildnaplózás ablak megjelenítéséhez a Visual Studio-ban. Az első eszköztár ikont választva megkezdi a normál és a tervezési idejű buildek felvételét a projektrendszerben.
A build rögzítése után megjelenik a buildnaplózási ablakban. Kattintson a jobb gombbal az elemre, és a helyi menüBen válassza a Naplók mentése lehetőséget a fájl mentéséhez
.binlog.
A .binlog-fájlokat az MSBuild Structured Log Viewer használatával tekintheti meg és keresheti meg.