2016-08-08 13 views
0

компании я работаю, чтобы нужно осуществить непрерывную интеграцию. Проекты разрабатываются с использованием Lightswitch с visual studio 2012. Мы используем Team Foundation Server для управления исходной версией. Я создал определение сборки и пул агентов, чтобы попытаться выполнить процесс сборки программным образом с помощью задачи MsBuild в TFS.Ошибка MSB4184 Microsoft.LightSwitch.Publish.targets при создании проекта с использованием Team Foundation Сборка

Все идет отлично, за исключением того, что шаг «Решение» создает ошибку. Ниже след:

2016-08-08T17:30:17.1606552Z Checking if artifacts directory exists: C:\TFSAgent\_work\1\a 
2016-08-08T17:30:17.1606552Z Deleting artifacts directory. 
2016-08-08T17:30:17.1606552Z Creating artifacts directory. 
2016-08-08T17:30:17.1762560Z Checking if test results directory exists: C:\TFSAgent\_work\1\TestResults 
2016-08-08T17:30:17.1762560Z Deleting test results directory. 
2016-08-08T17:30:17.1762560Z Creating test results directory. 
2016-08-08T17:30:17.2230568Z Starting: Get sources 
2016-08-08T17:30:17.2386617Z Entering TfvcSourceProvider.PrepareRepositoryAsync 
2016-08-08T17:30:17.2386617Z localPath=C:\TFSAgent\_work\1\s 
2016-08-08T17:30:17.2386617Z clean=False 
2016-08-08T17:30:17.2386617Z sourceVersion=199 
2016-08-08T17:30:17.2386617Z mappingJson={"mappings":[{"serverPath":"$/OmniPay","mappingType":"map","localPath":"\\"},{"serverPath":"$/OmniPay/Drops","mappingType":"cloak","localPath":"\\"}]} 
2016-08-08T17:30:17.2386617Z Syncing repository: OmniPay (TFVC) 
2016-08-08T17:30:17.2386617Z workspaceName=ws_1_3 
2016-08-08T17:30:21.4039019Z Workspace Name: ws_1_3;45d6157a-c0a3-480c-9615-310b82a07e0e 
2016-08-08T17:30:21.5130997Z tf get /version:199 
2016-08-08T17:30:22.6987201Z Done syncing repository OmniPay to version 199 (workspace version C199) 
2016-08-08T17:30:22.6987201Z Leaving TfvcSourceProvider.PrepareRepositoryAsync 
2016-08-08T17:30:22.9015180Z Running tasks 
2016-08-08T17:30:22.9327171Z Starting task: Build solution $/OmniPay/0-Development/OmniMerchant/OmniMerchant.sln 
2016-08-08T17:30:22.9951206Z C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -Sta -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ". ([scriptblock]::Create('if (!$PSHOME) { $null = Get-Item -LiteralPath ''variable:PSHOME'' } else { Import-Module -Name ([System.IO.Path]::Combine($PSHOME, ''Modules\Microsoft.PowerShell.Management\Microsoft.PowerShell.Management.psd1'')) ; Import-Module -Name ([System.IO.Path]::Combine($PSHOME, ''Modules\Microsoft.PowerShell.Utility\Microsoft.PowerShell.Utility.psd1'')) }')) 2>&1 | ForEach-Object { Write-Verbose $_.Exception.Message -Verbose } ; $env:TF_BUILD = 'True' ; Import-Module -Name 'C:\TFSAgent\tasks\VSBuild\1.0.37\ps_modules\VstsTaskSdk\VstsTaskSdk.psd1' -ArgumentList @{ NonInteractive = $true } -ErrorAction Stop ; $VerbosePreference = 'SilentlyContinue' ; $DebugPreference = 'SilentlyContinue' ; Invoke-VstsTaskScript -ScriptBlock ([scriptblock]::Create('. ''C:\TFSAgent\tasks\VSBuild\1.0.37\VSBuild.ps1'''))" 
2016-08-08T17:30:24.8203363Z ##[warning]Visual Studio version '11.0' not found. Looking for the latest version. 
2016-08-08T17:30:25.1947427Z ##[command]"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" "C:\TFSAgent\_work\1\s\0-Development\OmniMerchant\OmniMerchant.sln" /nologo /nr:false /fl /flp:"logfile=C:\TFSAgent\_work\1\s\0-Development\OmniMerchant\OmniMerchant.sln.log" /dl:CentralLogger,"C:\TFSAgent\tasks\VSBuild\1.0.37\ps_modules\MSBuildHelpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll"*ForwardingLogger,"C:\TFSAgent\tasks\VSBuild\1.0.37\ps_modules\MSBuildHelpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll" /p:platform="any cpu" /p:configuration="release" /p:VisualStudioVersion="10.0" 
2016-08-08T17:30:25.3195436Z Los proyectos de esta solución se van a compilar de uno en uno. Para habilitar la compilación en paralelo, agregue el modificador "/m". 
2016-08-08T17:30:25.3351434Z Compilación iniciada a las 08/08/2016 12:30:25 p. m.. 
2016-08-08T17:30:25.5223466Z Proyecto "C:\TFSAgent\_work\1\s\0-Development\OmniMerchant\OmniMerchant.sln" en nodo 1 (destinos predeterminados). 
2016-08-08T17:30:25.5223466Z ValidateSolutionConfiguration: 
2016-08-08T17:30:25.5223466Z Compilando la configuración de soluciones "release|any cpu". 
2016-08-08T17:30:25.7719622Z ##[error]C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\LightSwitch\v3.0\Publish\v1.8\Microsoft.LightSwitch.Publish.targets(31,9): Error MSB4184: La expresión "[System.IO.Path]::Combine(null, bin\x86)" no se puede evaluar. El valor no puede ser nulo. Nombre del parámetro: path1 
2016-08-08T17:30:25.7719622Z El proyecto "C:\TFSAgent\_work\1\s\0-Development\OmniMerchant\OmniMerchant.sln" (1) está compilando "C:\TFSAgent\_work\1\s\0-Development\OmniMerchant\OmniMerchant.ls3proj" (2) en el nodo 1 (destinos predeterminados). 
2016-08-08T17:30:25.7719622Z C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\LightSwitch\v3.0\Publish\v1.8\Microsoft.LightSwitch.Publish.targets(31,9): error MSB4184: La expresión "[System.IO.Path]::Combine(null, bin\x86)" no se puede evaluar. El valor no puede ser nulo. Nombre del parámetro: path1 [C:\TFSAgent\_work\1\s\0-Development\OmniMerchant\OmniMerchant.ls3proj] 
2016-08-08T17:30:25.8031476Z Compilación del proyecto terminada "C:\TFSAgent\_work\1\s\0-Development\OmniMerchant\OmniMerchant.ls3proj" (destinos predeterminados) -- ERROR. 
2016-08-08T17:30:25.8499500Z Compilación del proyecto terminada "C:\TFSAgent\_work\1\s\0-Development\OmniMerchant\OmniMerchant.sln" (destinos predeterminados) -- ERROR. 
2016-08-08T17:30:25.8499500Z ERROR al compilar. 
2016-08-08T17:30:25.8499500Z "C:\TFSAgent\_work\1\s\0-Development\OmniMerchant\OmniMerchant.sln" (destino predeterminado) (1) -> 
2016-08-08T17:30:25.8499500Z "C:\TFSAgent\_work\1\s\0-Development\OmniMerchant\OmniMerchant.ls3proj" (destino predeterminado) (2) -> 
2016-08-08T17:30:25.8499500Z C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\LightSwitch\v3.0\Publish\v1.8\Microsoft.LightSwitch.Publish.targets(31,9): error MSB4184: La expresión "[System.IO.Path]::Combine(null, bin\x86)" no se puede evaluar. El valor no puede ser nulo. Nombre del parámetro: path1 [C:\TFSAgent\_work\1\s\0-Development\OmniMerchant\OmniMerchant.ls3proj] 
2016-08-08T17:30:25.8499500Z  0 Advertencia(s) 
2016-08-08T17:30:25.8499500Z  1 Errores 
2016-08-08T17:30:25.8499500Z Tiempo transcurrido 00:00:00.29 
2016-08-08T17:30:26.0371525Z ##[error]Process 'msbuild.exe' exited with code '1'. 
2016-08-08T17:30:26.1307517Z Finishing task: VSBuild 
2016-08-08T17:30:26.1307517Z Starting task: Copy Files to: $(build.artifactstagingdirectory) 
2016-08-08T17:30:26.1463517Z Set workingFolder to default: C:\TFSAgent\tasks\CopyFiles\1.0.20 
2016-08-08T17:30:26.4583580Z ##[debug]agent.workFolder=C:\TFSAgent\_work 
2016-08-08T17:30:26.4583580Z ##[debug]loading inputs and endpoints 
2016-08-08T17:30:26.4583580Z ##[debug]loading ENDPOINT_AUTH_$/ 
2016-08-08T17:30:26.4583580Z ##[debug]loading ENDPOINT_AUTH_PARAMETER_$/_ACCESSTOKEN 
2016-08-08T17:30:26.4583580Z ##[debug]loading ENDPOINT_AUTH_PARAMETER_SYSTEMVSSCONNECTION_ACCESSTOKEN 
2016-08-08T17:30:26.4583580Z ##[debug]loading ENDPOINT_AUTH_SCHEME_$/ 
2016-08-08T17:30:26.4583580Z ##[debug]loading ENDPOINT_AUTH_SCHEME_SYSTEMVSSCONNECTION 
2016-08-08T17:30:26.4583580Z ##[debug]loading ENDPOINT_AUTH_SYSTEMVSSCONNECTION 
2016-08-08T17:30:26.4583580Z ##[debug]loading INPUT_CLEANTARGETFOLDER 
2016-08-08T17:30:26.4583580Z ##[debug]loading INPUT_CONTENTS 
2016-08-08T17:30:26.4583580Z ##[debug]loading INPUT_OVERWRITE 
2016-08-08T17:30:26.4583580Z ##[debug]loading INPUT_SOURCEFOLDER 
2016-08-08T17:30:26.4583580Z ##[debug]loading INPUT_TARGETFOLDER 
2016-08-08T17:30:26.4583580Z ##[debug]loaded 11 
2016-08-08T17:30:26.4583580Z ##[debug]check path : C:\TFSAgent\tasks\CopyFiles\1.0.20\task.json 
2016-08-08T17:30:26.4583580Z ##[debug]set resource file to: C:\TFSAgent\tasks\CopyFiles\1.0.20\task.json 
2016-08-08T17:30:26.4739560Z ##[debug]system.culture=en-US 
2016-08-08T17:30:26.4739560Z ##[debug]Contents=**\bin\release\** 
2016-08-08T17:30:26.4739560Z ##[debug]SourceFolder=C:\TFSAgent\_work\1\s 
2016-08-08T17:30:26.4739560Z ##[debug]check path : C:\TFSAgent\_work\1\s 
2016-08-08T17:30:26.4739560Z ##[debug]TargetFolder=C:\TFSAgent\_work\1\a 
2016-08-08T17:30:26.4739560Z ##[debug]CleanTargetFolder=false 
2016-08-08T17:30:26.4739560Z ##[debug]OverWrite=false 
2016-08-08T17:30:26.4739560Z ##[debug]include content pattern: **\bin\release\** 
2016-08-08T17:30:26.7547577Z ##[debug]find C:\TFSAgent\_work\1\s 
2016-08-08T17:30:26.7547577Z ##[debug]2219 matches. 
2016-08-08T17:30:26.8795588Z ##[debug]allFiles contains 2012 files 
2016-08-08T17:30:26.8795588Z ##[debug]Include matching C:\TFSAgent\_work\1\s\**\bin\release\** 
2016-08-08T17:30:26.9107601Z ##[debug]Include matched 0 files 
2016-08-08T17:30:26.9107601Z found 0 files 
2016-08-08T17:30:26.9263593Z Finishing task: CopyFiles 
2016-08-08T17:30:26.9419655Z Starting task: Publish Artifact: drop 
2016-08-08T17:30:26.9419655Z Set workingFolder to default: C:\TFSAgent\tasks\PublishBuildArtifacts\1.0.34 
2016-08-08T17:30:27.2383627Z ##[debug]agent.workFolder=C:\TFSAgent\_work 
2016-08-08T17:30:27.2383627Z ##[debug]loading inputs and endpoints 
2016-08-08T17:30:27.2383627Z ##[debug]loading ENDPOINT_AUTH_$/ 
2016-08-08T17:30:27.2383627Z ##[debug]loading ENDPOINT_AUTH_PARAMETER_$/_ACCESSTOKEN 
2016-08-08T17:30:27.2539635Z ##[debug]loading ENDPOINT_AUTH_PARAMETER_SYSTEMVSSCONNECTION_ACCESSTOKEN 
2016-08-08T17:30:27.2539635Z ##[debug]loading ENDPOINT_AUTH_SCHEME_$/ 
2016-08-08T17:30:27.2539635Z ##[debug]loading ENDPOINT_AUTH_SCHEME_SYSTEMVSSCONNECTION 
2016-08-08T17:30:27.2539635Z ##[debug]loading ENDPOINT_AUTH_SYSTEMVSSCONNECTION 
2016-08-08T17:30:27.2539635Z ##[debug]loading INPUT_ARTIFACTNAME 
2016-08-08T17:30:27.2539635Z ##[debug]loading INPUT_ARTIFACTTYPE 
2016-08-08T17:30:27.2539635Z ##[debug]loading INPUT_PATHTOPUBLISH 
2016-08-08T17:30:27.2539635Z ##[debug]loading INPUT_TARGETPATH 
2016-08-08T17:30:27.2539635Z ##[debug]loaded 10 
2016-08-08T17:30:27.2539635Z ##[debug]check path : C:\TFSAgent\tasks\PublishBuildArtifacts\1.0.34\task.json 
2016-08-08T17:30:27.2539635Z ##[debug]set resource file to: C:\TFSAgent\tasks\PublishBuildArtifacts\1.0.34\task.json 
2016-08-08T17:30:27.2539635Z ##[debug]system.culture=en-US 
2016-08-08T17:30:27.2539635Z ##[debug]PathtoPublish=C:\TFSAgent\_work\1\a 
2016-08-08T17:30:27.2539635Z ##[debug]check path : C:\TFSAgent\_work\1\a 
2016-08-08T17:30:27.2539635Z ##[debug]ArtifactName=drop 
2016-08-08T17:30:27.2539635Z ##[debug]ArtifactType=Container 
2016-08-08T17:30:27.2695627Z ##[debug]TargetPath=\\my\share\Merchant\20160808.4 
2016-08-08T17:30:28.6267793Z Max Concurrent Uploads 2, Max Creators 1 
2016-08-08T17:30:28.7048085Z Found 0 files to upload. 
2016-08-08T17:30:28.7203860Z Created 0 files without uploading content. Total files processed 0 
2016-08-08T17:30:28.7203860Z Uploaded artifact 'C:\TFSAgent\_work\1\a' to container folder 'drop' of build 24. 
2016-08-08T17:30:29.6719971Z Associated artifact 12 with build 24 
2016-08-08T17:30:29.6875965Z Finishing task: PublishBuildArtifacts 
2016-08-08T17:30:29.7032002Z ##[error]System.Exception: Task VSBuild failed. This caused the job to fail. Look at the logs for the task for more details. 
2016-08-08T17:30:29.7032002Z ##[error] en Microsoft.TeamFoundation.DistributedTask.Worker.JobRunner.Run(IJobContext jobContext, IJobRequest job, IJobExtension jobExtension, CancellationTokenSource tokenSource) 

Ошибка в строке 29 выглядит следующим образом:

2016-08-08T17:30:25.7719622Z ##[error]C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\LightSwitch\v3.0\Publish\v1.8\Microsoft.LightSwitch.Publish.targets(31,9): Error MSB4184: La expresión "[System.IO.Path]::Combine(null, bin\x86)" no se puede evaluar. El valor no puede ser nulo. Nombre del parámetro: path1 

На английском языке означает: Ошибка MSB4184: «[System.IO.Path] :: Объединить (нуль, бен \ x86) «Выражение не может быть оценено. Значение не может быть нулевым. Имя параметра: path1

Углубляясь в Microsoft.LightSwitch.Publish.Targets линии 39:

<!--If the path to the sign tool is not set, try the Windows SDK path or the Framework SDK path --> 
<_WindowsSDKSignToolPath Condition="'$(SignToolPath)' == ''">$([System.IO.Path]::Combine('$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots', 'KitsRoot', null, RegistryView.Registry32, RegistryView.Default))', 'bin\x86'))</_WindowsSDKSignToolPath> 

Компиляция проекта с помощью Visual Studio 2012 работает отлично, однако ошибка бросает TFS сборки относится к OmniMerchant.ls3proj в строке :

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\LightSwitch\$(LightSwitchVersion)\Microsoft.LightSwitch.targets" /> 

Я создал HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ Kits Установленные корни и ключ KitsRoot в сервере, и я скопировал все папки и файлы Microsoft \ VisualStudio \ Lightswitch на сервере на основе разработчиков машины, но ошибки ул плохо проявляется. Пожалуйста, нужна помощь! благодаря

+1

Я заметил войну в вашем журнале '## [предупреждение] Visual Studio версии '11 .0 'не найден. Ищете последнюю версию. 'Вы указали правильную версию в определении сборки? Это работало с локальной средой сборки при создании агента не через TFS? А также попробуйте еще раз с изменением 'release | любой cpu' на' release | x86' –

+0

Патрик, привет, требуется ли Visual Studio 2012 установить на сервер сборки или какой-нибудь sdk? –

+1

Да, вам лучше убедиться, что среда на вашем сервере sever (агент сборки) такая же, как ваша локальная. Это значительно снизит риск сбоев сборки. Повторите попытку после установки VS2012 в своем агенте сборки. –

ответ

0

Я нашел ответ, благодаря Patrick-MSFT, которые помогли мне много.

Многие ошибок были вызваны правильно отсутствующими рамочной версию, а также отсутствие зависимостей решения.

TFS строит Агент для MSBuild выбирает только по проектам Visual Studio, прописанных в Строительстве Определения или же для последней версии. Отсутствие правильной версии установлена ​​на сервере сборки из MSBuild искало последнюю установленную версию и поэтому выполняется следующими строками из Microsoft.LightSwitch.Publish.Targets:

<_WindowsSDKSignToolPath Condition="'$(SignToolPath)' == ''">$([System.IO.Path]::Combine('$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots', 'KitsRoot', null, RegistryView.Registry32, RegistryView.Default))', 'bin\x86'))</_WindowsSDKSignToolPath> 

Это вызвало ошибку и правильный путь преодоления, что делает следующее:

по словам Патрика-MSFT Я установил Visual Studio 2012 плюс обновления, и все инструменты, необходимые так же, как мой компьютер, развивающийся в TFS сборки сервера.

Кроме этого, это было необходимо поместить все сборки проектов зависимостей (DLL) не зарегистрированные в TFS.

Теперь мои сборки зеленые!