Есть ли в xbuild /t: поддержка пакетов? (TravisCI)

(несколько связанная проблема)

TravisCI поддерживает сборки C# и развертывания Elastic Beanstalk. Здорово. Но я не могу получить цель Package для создания моего zip-файла, который развертывается в EBS IIS.

Мой файл.travis.yml выглядит так:

language: csharp
solution: RestfulWCFService.sln
mono:
  - latest
script:
  - xbuild RestfulWCFService.sln /p:Configuration=Release /p:Platform="Any CPU" ## OK
  - xbuild RestfulWCFService.csproj /t:Package /p:Configuration=Release ## FAIL!
deploy:
  - provider: elasticbeanstalk
  ....

моно версия:

$ mono --version
Mono JIT compiler version 4.0.1 (tarball Thu May 28 09:08:28 UTC 2015)

(ОК) сообщение о сборке:

...
Done executing task "CallTarget"
Done building target "Build" in project "/home/vagrant/syllabus/RestfulWCFService.sln".
Done building target "Build" in project "/home/vagrant/syllabus/RestfulWCFService.sln" ("/home/vagrant/syllabus/RestfulWCFService.sln").
Done building project "/home/vagrant/syllabus/RestfulWCFService.sln".

Build succeeded.

Warnings:

/home/vagrant/syllabus/RestfulWCFService.sln (default targets) ->
(Build target) ->
/home/vagrant/syllabus/RestfulWCFService.csproj (default targets) ->
/usr/lib/mono/4.5/Microsoft.Common.targets (ResolveAssemblyReferences target) ->

        /usr/lib/mono/4.5/Microsoft.Common.targets:  warning : Reference 'System.Web.Entity' not resolved

         1 Warning(s)
         0 Error(s)

Сообщение (FAIL) /t:Package выглядит следующим образом:

...
/home/vagrant/syllabus/RestfulWCFService.csproj: Importing project /usr/lib/mono/xbuild/Microsoft/VisualStudio/v10.0/WebApplications/Microsoft.WebApplication.targets from extension path /usr/lib/mono/xbuild
Building target "_ValidateEssentialProperties" in project "/home/vagrant/syllabus/RestfulWCFService.csproj" ("/usr/lib/mono/4.5/Microsoft.Common.targets").
Done building target "_ValidateEssentialProperties" in project "/home/vagrant/syllabus/RestfulWCFService.csproj" ("/usr/lib/mono/4.5/Microsoft.Common.targets").
/home/vagrant/syllabus/RestfulWCFService.csproj: error : Target named 'Package' not found in the project.
Done building project "/home/vagrant/syllabus/RestfulWCFService.csproj".-- FAILED

Build FAILED.
Errors:

/home/vagrant/syllabus/RestfulWCFService.csproj (Package) ->

        /home/vagrant/syllabus/RestfulWCFService.csproj: error : Target named 'Package' not found in the project.

         0 Warning(s)
         1 Error(s)

Итак, мой вопрос, почему Target named 'Package' not found in the project? Я подтвердил /t:Package отлично работает с MSBuild на компьютере с Windows.

Примечание: я обнаружил, что если я добавлю пустую цель в файл.csproj, как

[Target Name="Package"\]
[/Target]

Он больше не жалуется на отсутствующую цель, но ничего не делает:

...
/home/vagrant/syllabus/RestfulWCFService.csproj: Importing project /usr/lib/mono/xbuild/Microsoft/VisualStudio/v10.0/WebApplications/Microsoft.WebApplication.targets from extension path /usr/lib/mono/xbuild
Building target "_ValidateEssentialProperties" in project "/home/vagrant/syllabus/RestfulWCFService.csproj" ("/usr/lib/mono/4.5/Microsoft.Common.targets").
Done building target "_ValidateEssentialProperties" in project "/home/vagrant/syllabus/RestfulWCFService.csproj" ("/usr/lib/mono/4.5/Microsoft.Common.targets").
Building target "Package" in project "/home/vagrant/syllabus/RestfulWCFService.csproj" ("/home/vagrant/syllabus/RestfulWCFService.csproj").
Done building target "Package" in project "/home/vagrant/syllabus/RestfulWCFService.csproj" ("/home/vagrant/syllabus/RestfulWCFService.csproj").
Done building project "/home/vagrant/syllabus/RestfulWCFService.csproj".

Build succeeded.
         0 Warning(s)
         0 Error(s)

Любая помощь xbuild будет принята с благодарностью.

1 ответ

Итак, мой вопрос, почему цель с именем "Package" не найдена в проекте? Я проверил /t: пакет отлично работает с MSBuild на компьютере с Windows.

xBuild не является 100% заменой MSBuild. MSBuild теперь открыт с открытым исходным кодом, и ведется работа над тем, чтобы хорошо играть в мире xplat, но его пока нет...

Поэтому, когда xbuild жалуется на отсутствие цели Package в вашем проекте, это происходит потому, что она не определена в целях, которые доступны "из коробки" для xbuild. Очень хорошо можно было бы написать как зависимую от платформы dll, которую MSBuild загружает / выполняет, и там не было публичной информации о том, что они делали, и поэтому никогда не фокусировался на Xamarin, и / или недостаточно людей нуждались в этой функции. Плюс /t: пакет создает файлы типа "myApp.deploy.cmd", которые не будут работать на * nix....

Таким образом, вы на правильном пути, добавьте цель Package в свой проект и определите задачи, которые вам необходимы для эмуляции того, что пакет встроенной инфраструктуры Web-пакетов делает в Windows, но в xplat env. Я бы предположил, что некоторые сообщения, Path объединяет, исполняет и копирует задачи для создания / перемещения zip-файла. Если вам действительно нужен файл "myApp.SetParameters.xml", вы также можете выполнить эту задачу.

Предопределенные цели xbuild v12 в "Microsoft.Common.targets"

Target Name="_ValidateEssentialProperties"
Target Name="PrepareForBuild" DependsOnTargets="$(PrepareForBuildDependsOn)"
Target Name="AssignLinkMetadata"
Target Name="GetFrameworkPaths"
Target Name="GetReferenceAssemblyPaths" DependsOnTargets="$(GetReferenceAssemblyPathsDependsOn)"
Target Name="GenerateTargetFrameworkMonikerAttribute"
Target Name="ResolveReferences" DependsOnTargets="$(ResolveReferencesDependsOn)"
Target Name="BeforeResolveReferences"
Target Name="AfterResolveReferences"
Target Name="ResolveAssemblyReferences" DependsOnTargets="$(ResolveAssemblyReferencesDependsOn)"
Target Name="SplitProjectReferencesByExistent"
Target Name="_ComputeNonExistentFileProperty"
Target Name="BuildOnlySettings"
Target Name="BeforeBuild"
Target Name="AfterBuild"
Target Name="Build" DependsOnTargets="$(BuildDependsOn)" Outputs="$(TargetPath)"
Target Name="BeforeCompile"
Target Name="AfterCompile"
Target Name="Compile" DependsOnTargets="$(CompileDependsOn)"
Target Name="PrepareForRun" DependsOnTargets="$(PrepareForRunDependsOn)"
Target Name="PrepareResources" DependsOnTargets="$(PrepareResourcesDependsOn)"
Target Name="SplitResourcesByCulture" DependsOnTargets="AssignTargetPaths"
Target Name="GenerateSatelliteAssemblies"
Target Name="DeployOutputFiles"
Target Name="_CopyDeployFilesToOutputDirectory"
Target Name="_CopyDeployFilesToOutputDirectoryPreserveNewest"
Target Name="_CopyDeployFilesToOutputDirectoryAlways"
Target Name="_CopyAppConfigFile" Condition="'@(AppConfigWithTargetPath)' != ''"
Target Name="GetTargetPath" Outputs="$(TargetPath)"
Target Name="GetCopyToOutputDirectoryItems"
Target Name="PreBuildEvent"
Target Name="PostBuildEvent"
Target Name="_TimestampBeforeCompile" Condition="'$(RunPostBuildEvent)' == 'OnOutputUpdated'"
Target Name="_TimestampAfterCompile" Condition="'$(RunPostBuildEvent)' == 'OnOutputUpdated'"
Target Name="BeforeRebuild"
Target Name="AfterRebuild"
Target Name="Rebuild"
Target Name="_RecordCleanFile"
Target Name="_GetCompileOutputsForClean"
Target Name="_GetCleanFileWrites"
Target Name="CleanReferencedProjects"
Target Name="Clean" DependsOnTargets="$(CleanDependsOn)"
Target Name="BeforeClean"
Target Name="AfterClean"
Target Name="CoreClean" DependsOnTargets="_GetCleanFileWrites"
Target Name="ImplicitlyExpandDesignTimeFacades"

Задачи xbuild (определите в v12 / Microsoft.Build.Tasks.*):

Microsoft.Build.Tasks.AL"
Microsoft.Build.Tasks.AssignTargetPath"
Microsoft.Build.Tasks.AssignLinkMetadata"
Microsoft.Build.Tasks.AssignCulture"
Microsoft.Build.Tasks.AssignProjectConfiguration"
Microsoft.Build.Tasks.CallTarget"
Microsoft.Build.Tasks.CombinePath"
Microsoft.Build.Tasks.Copy"
Microsoft.Build.Tasks.CreateCSharpManifestResourceName"
Microsoft.Build.Tasks.CreateVisualBasicManifestResourceName"
Microsoft.Build.Tasks.CreateItem"
Microsoft.Build.Tasks.CreateProperty"
Microsoft.Build.Tasks.Csc"
Microsoft.Build.Tasks.Delete"
Microsoft.Build.Tasks.Error"
Microsoft.Build.Tasks.Exec"
Microsoft.Build.Tasks.FindAppConfigFile"
Microsoft.Build.Tasks.FindUnderPath"
Microsoft.Build.Tasks.GenerateResource"
Microsoft.Build.Tasks.GetAssemblyIdentity"
Microsoft.Build.Tasks.GetFrameworkPath"
Microsoft.Build.Tasks.GetFrameworkSdkPath"
Microsoft.Build.Tasks.GetReferenceAssemblyPaths"
Microsoft.Build.Tasks.LC"
Microsoft.Build.Tasks.MakeDir"
Microsoft.Build.Tasks.Message"
Microsoft.Build.Tasks.MSBuild"
Microsoft.Build.Tasks.ReadLinesFromFile"
Microsoft.Build.Tasks.RemoveDir"
Microsoft.Build.Tasks.RemoveDuplicates"
Microsoft.Build.Tasks.ResolveAssemblyReference"
Microsoft.Build.Tasks.SignFile"
Microsoft.Build.Tasks.Touch"
Microsoft.Build.Tasks.Vbc"
Microsoft.Build.Tasks.Warning"
Microsoft.Build.Tasks.WriteCodeFragment"
Microsoft.Build.Tasks.WriteLinesToFile"
Другие вопросы по тегам