2015-03-16 4 views
1

При использовании TeamCity и запуска сборки я получаю следующее сообщение об ошибке.TeamCity не создаст папку выпуска

13:20:31]Step 1/1: MSBuild (1s) 
[13:20:32][Step 1/1] src\DystopiaOnline.proj.teamcity: Build target: BuildSolution 
[13:20:32][src\DystopiaOnline.proj.teamcity] BuildSolution 
[13:20:32][BuildSolution] C:\TeamCity\buildAgent\work\8c8eb5050252f271\src\DystopiaOnline.proj(36, 5): error MSB4062: The "DystopiaOnline.Build.Tasks.GetUnixTimestamp" task could not be loaded from the assembly C:\TeamCity\buildAgent\work\8c8eb5050252f271\src\DystopiaOnline.Build.Tasks/bin/Release/DystopiaOnline.Build.Tasks.dll. Could not load file or assembly 'file:///C:\TeamCity\buildAgent\work\8c8eb5050252f271\src\DystopiaOnline.Build.Tasks\bin\Release\DystopiaOnline.Build.Tasks.dll' or one of its dependencies. The system cannot find the file specified. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. 
[13:20:32][Step 1/1] Step MSBuild failed 

Однако, когда я запускаю сборку из командной строки разработчика, сборка работает нормально. Взглянув внутрь, C:\TeamCity\buildAgent\work\8c8eb5050252f271\src\D ystopiaOnline.Build.Tasks\bin показывает только папку Debug, а не папку Release. Запуск сборки из командной строки разработчика работает нормально, только из Team City этого не делает.

enter image description here

не папка Release создается, когда сборка запускается из команды города с Env набора переменных подталкивать? Что может быть причиной этого? Какие-нибудь идеи?

В моем проектном решении .proj-файл установлены следующие условия для определения конфигурации сборки. может ли любой, кто имеет опыт работы с городом команды, предлагать какие-либо рекомендации относительно проблемы? Благодарю.

<PropertyGroup> 
     <Env Condition="'$(Env)' == ''">dev</Env> 
     <VersionNumber Condition="'$(VersionNumber)' == ''">1</VersionNumber> 
     <MSBuildCommunityTasksPath>$(MSBuildThisFileDirectory)/Tasks</MSBuildCommunityTasksPath> 
     <UnityPath Condition="'$(UnityPath)' == ''">c:\Program Files (x86)\Unity</UnityPath> 
     </PropertyGroup> 

     <PropertyGroup Condition="'$(Env)' == 'dev'"> 
     <BuildConfig>Debug</BuildConfig> 
     <Domain>mmo.dystopiaOnline.dev</Domain> 
     <SetParamsFile>Parameters.Local.config</SetParamsFile> 
     </PropertyGroup> 

     <PropertyGroup Condition="'$(Env)' == 'prod'"> 
     <BuildConfig>Release</BuildConfig> 
     <Domain>mmo.DystopiaOnline.com</Domain> 
     <SetParamsFile>Parameters.Production.config</SetParamsFile> 
     </PropertyGroup> 

     <PropertyGroup Condition="'$(Env)' == 'sta'"> 
     <BuildConfig>Release</BuildConfig> 
     <Domain>mmo.DystopiaOnline.sta</Domain> 
     <SetParamsFile>Parameters.Staging.config</SetParamsFile> 
     </PropertyGroup> 

журнал TeamCity сборки

[11:45:53]Checking for changes 
[11:45:53]Collecting changes in 1 VCS root (1s) 
[11:45:55]Clearing temporary directory: C:\TeamCity\buildAgent\temp\buildTmp 
[11:45:55]Publishing internal artifacts 
[11:45:55]Checkout directory: C:\TeamCity\buildAgent\work\8c8eb5050252f271 
[11:45:55]Updating sources: server side checkout 
[11:45:55]Step 1/1: MSBuild (4s) 
[11:45:55][Step 1/1] Starting: C:\TeamCity\buildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.MsBuildBootstrap.exe /workdir:C:\TeamCity\buildAgent\work\8c8eb5050252f271 "/msbuildPath:C:\Program Files (x86)\MSBuild\12.0\bin\MSBuild.exe" 
[11:45:55][Step 1/1] in directory: C:\TeamCity\buildAgent\work\8c8eb5050252f271 
[11:45:59][Step 1/1] src\DystopiaOnline.proj.teamcity: Build target: BuildSolution 
[11:45:59][src\DystopiaOnline.proj.teamcity] BuildSolution 
[11:45:59][BuildSolution] MSBuild 
[11:45:59][BuildSolution] C:\TeamCity\buildAgent\work\8c8eb5050252f271\src\DystopiaOnline.proj(36, 5): error MSB4062: The "DystopiaOnline.Build.Tasks.GetUnixTimestamp" task could not be loaded from the assembly C:\TeamCity\buildAgent\work\8c8eb5050252f271\src\DystopiaOnline.Build.Tasks/bin/Release/DystopiaOnline.Build.Tasks.dll. Could not load file or assembly 'file:///C:\TeamCity\buildAgent\work\8c8eb5050252f271\src\DystopiaOnline.Build.Tasks\bin\Release\DystopiaOnline.Build.Tasks.dll' or one of its dependencies. The system cannot find the file specified. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. 
[11:45:59][Step 1/1] Process exited with code 1 
[11:45:59][Step 1/1] MSBuild output 
[11:45:59][Step 1/1] Step MSBuild failed 
[11:45:59]Publishing internal artifacts 
[11:45:59]Build finished 

Это как мой проект установки взгляд witht папку сборки.

enter image description here

enter image description here

link to .proj file on OneDrive

Ошибка после копирования файла выпуска в TeamCity вручную

C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(3797, 5): error MSB3027: Could not copy "C:\TeamCity\buildAgent\work\8c8eb5050252f271\src\DystopiaOnline.Base\bin\Release\DystopiaOnline.Base.dll" to "bin\Release\DystopiaOnline.Base.dll". Exceeded retry count of 10. Failed. 
C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(3797, 5): error MSB3021: Unable to copy file "C:\TeamCity\buildAgent\work\8c8eb5050252f271\src\DystopiaOnline.Base\bin\Release\DystopiaOnline.Base.dll" to "bin\Release\DystopiaOnline.Base.dll". The process cannot access the file 'bin\Release\DystopiaOnline.Base.dll' because it is being used by another process. 
+0

Является ли проект, который должен производить \ Src \ DystopiaOnline.Build.Tasks/bin/Release/DystopiaOnline.Build.Tasks.dll работает как часть этой общей сборки? Если да, то для чего это вывод журнала сборки. Или откуда должен поступать этот файл? – Nanhydrin

+0

Привет, Нангидрин, спасибо, что нашли время, чтобы помочь, \ src \ DystopiaOnline.Build.Tasks/bin/Release/DystopiaOnline.Build.Tasks.dll является частью виртуальной сборки в моем soloution –

+0

Что значит виртуальная сборка папка? Есть ли запись журнала сборки, показывающая файл, создаваемый в указанном месте? – Nanhydrin

ответ

2

Существует опечатка в файле DystopiaOnline.proj в слове «Configuraton»:

<MSBuild Projects="DystopiaOnline.Build.Tasks/DystopiaOnline.Build.Tasks.csproj" Properties="Configuraton=$(BuildConfig)" /> 

Я думаю, что это является причиной неправильного здания конфигурации.

+0

Ничего себе, спасибо, Алина, которая уделила большое внимание деталям, не верю, что я пропустил это, благодаря Нангидрину, Карнифексу и Джонсукваду также за то, что уделил время, чтобы помочь. –

0

Как у вас установка параметра в сборке? Это наиболее вероятно, что это значение не передается в сборки полоз, так он по умолчанию Деву

<Env Condition="'$(Env)' == ''">dev</Env> 

При использовании TeamCity параметров он должен быть параметром системы или среды. Вы также можете проверить параметры, используемые в сборке, щелкнув по нему и перейдя на вкладки параметров, возможно, захотите дважды проверить, что оно имеет нужное значение.

+0

Привет, Jon Спасибо за ввод. Я установил параметры среды TeamCity для «prod», это мой первый раз, когда я использовал TeamCity, я, возможно, настроил их неправильно, поэтому я вернулся и дважды проверил их, однако ошибка все еще остается. –

0

Прежде всего имейте в виду, что путь к Windows - это '\' NOT '/'. В обычных случаях нет другого (например, когда вы хотите поместить путь в Проводник), но иногда (я сталкиваюсь с некоторыми проблемами с некоторой задачей в MsBuild) механизм не признает, что это правильный путь. Таким образом, изменить путь к

<MSBuildCommunityTasksPath>$(MSBuildThisFileDirectory)\Tasks\</MSBuildCommunityTasksPath> 

(Также MsBuild конвенции сказал нам поставить слэш)

И всякий раз, когда у вас есть ссылка на «DystopiaOnline.Build.Tasks.dll»: [...]src\DystopiaOnline.Build.Tasks\bin\Release\DystopiaOnline.Build.Tasks.dll.


В журнале сборки, нет никаких признаков того, что MsBuild пытаются построить DystopiaOnline.Build.Tasks. Как вы определяете порядок построения своих проектов? Можете ли вы добавить этот проект, чтобы мы могли точно видеть, что MsBuild хочет сделать и в каком порядке.

Если вы используете <UsingTask> внутри того же файла проекта, который хочет построить DystopiaOnline.Build.Tasks ... Он никогда не будет работать, потому что MsBuild сначала попытается решить задачу, а затем запустить цели для сборки.

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

+0

Привет, танки Carnifex, чтобы не спешить отвечать. Я изменил все обратные косые черты, как вы предлагали, наведите ошибку в TeamCity. Я добавил копию файла proj в исходное сообщение. –

0

попробуйте создать новый системный параметр, называемый System.Configuration и установите значение "Release"

Смежные вопросы