В проектах, в которых рабочее пространство имеет только одну рабочую папку, мои скрипты сборки отлично работают. Теперь, когда я работаю с новым проектом, который требует 2 рабочих папки, все команды проверки и проверки моего предыдущего скрипта терпят неудачу, и файлы не найдены.Можете ли вы использовать несколько рабочих папок с TFS?
Очевидно, что я не понимаю критическую часть реализации рабочей области здесь ... У меня есть проект, который зависит от других проектов, вторая рабочая папка - это в основном сторонняя папка со ссылками на различные опубликованные файлы DLL и заголовки, необходимые для компиляции моего проекта. Есть 2 активные папки и локальные папки:
$(SourceDir)\TEAM-MAIN\Address Finalizer $(SourceDir)\TEAM-MAIN\HH-CAHPS Project\MAINLINE\3rd Party
Встроенный код работает отлично, но обычай AfterGet терпит неудачу на следующую запись:
<!-- Check out all of the assemblyInfo files -->
<Exec Command="$(TfCommand) checkout AssemblyInfo.cs /recursive"
WorkingDirectory="$(MSBuildProjectDirectory)\..\sources"
ContinueOnError="false"/>
Проект будет, конечно, работать, если у меня есть одну рабочую папку и переместить источник в достаточно высокую точку, чтобы получить все необходимые файлы, но я не хочу троллить 43 других проекта, чтобы сделать то, что я хочу, пускай с файлами сборки ...
Я также пробовал:
<!-- Check out all of the assemblyInfo files -->
<Exec Command="$(TfCommand) checkout AssemblyInfo.cs /recursive"
WorkingDirectory="$(SolutionRoot)"
ContinueOnError="false"/>
Те же проблемы, не смогли найти сборочные файлы ... Я проверил журнал сборки и я определенно видеть файлы сборки проверить на этапе сборки ...
Task "Get" Get TeamFoundationServerUrl="http://pgpd-team01:8080/" BuildUri="vstfs:///Build/Build/1430" Force=True Overwrite=False PopulateOutput=False Preview=False Recursive=True Version="C7564" Workspace="SBN01P-TFS03_61" <snip> Getting C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources\Address Finalizer\Address Finalizer\Properties\AssemblyInfo.cs;C7525.
Если у кого есть какие-либо идеи или может указать мне на какую-то статью, чтобы лучше объяснить, как работают несколько рабочих папок, я был бы признателен.
Значения некоторых переменных сборки:
MSBuildProjectDirectory: C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\BuildType SolutionRoot: C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources
предоставить более подробную информацию, я добавил следующую команду:
<!-- Report what our working folders are --> <Exec Command='$(TfCommand) workfold' WorkingDirectory="$(SolutionRoot)\TEAM-MAIN\Address Finalizer"/>
Результат был:
Task "Exec" Command: "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\..\tf.exe" workfold =============================================================================== Workspace: SBN01P-TFS03_61 (tfsservice) Server : http://pgpd-team01:8080/ $/InfoTurn/TEAM-MAIN/Address Finalizer: C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources\TEAM-MAIN\Address Finalizer $/InfoTurn/TEAM-MAIN/HH-CAHPS Project/MAINLINE/3rd Party: C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources\TEAM-MAIN\HH-CAHPS Project\MAINLINE\3rd Party
У меня есть что следующий рабочий каталог будет работать:
WorkingDirectory="$(SolutionRoot)\TEAM-MAIN\Address Finalizer"
Но что следующие два нет, обратите внимание, что вторая моя вторая рабочая папка:
WorkingDirectory="$(SolutionRoot)" WorkingDirectory="$(SolutionRoot)\TEAM-MAIN\HH-CAHPS Project\MAINLINE\3rd Party"
ошибка, что я получаю для выполнения этой задачи этикетки является наиболее полезным:
Using "Label" task from assembly "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\Microsoft.TeamFoundation.Build.Tasks.VersionControl.dll". Task "Label" Label TeamFoundationServerUrl="http://pgpd-team01:8080/" BuildUri="vstfs:///Build/Build/1507" Name="Address Finalizer 2.0.1 Build 039" Recursive=True Comments="Automated build: Address Finalizer 2.0.1 Build 039" Version="W" Child="replace" Files="C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources" C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\BuildType\TFSBuild.proj(310,5,310,5): error : Error: Unable to determine the workspace.
фактическая ошибка из заканчивало, который не является полезным, является:
Task "Exec" Command: "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\..\tf.exe" checkout AssemblyInfo.cs /recursive No matching items found in C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\Sources\AssemblyInfo.cs in your workspace. C:\Users\tfsservice\AppData\Local\Temp\InfoTurn\Address Finalizer\BuildType\TFSBuild.proj(280,5): error MSB3073: The command ""C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\..\tf.exe" checkout AssemblyInfo.cs /recursive" exited with code 1.
Каковы ваши рабочие пространства? Team Explorer -> rightclick the build definition -> Edit Build Definition -> вкладка Workspace. –
В конце второго параграфа я описываю две рабочие папки, которые у меня есть. – Shire
Убрал много форматов, предоставил больше информации для отладки. Похоже, что все задачи Exec и Label не работают, потому что они не могут определить рабочее пространство. – Shire