首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有xbuild /t:Package支持?(TravisCI)

是否有xbuild /t:Package支持?(TravisCI)
EN

Stack Overflow用户
提问于 2015-06-26 17:20:28
回答 1查看 648关注 0票数 0

(有点相关的issue)

TravisCI支持C#构建和弹性Beanstalk部署。凉爽的。但是,我无法获得包目标来构建部署到EBS IIS中的zip文件。

我的.travis.yml文件看起来如下:

代码语言:javascript
复制
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
  ....

单一版本:

代码语言:javascript
复制
$ mono --version
Mono JIT compiler version 4.0.1 (tarball Thu May 28 09:08:28 UTC 2015)

(确定)生成消息是:

代码语言:javascript
复制
...
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)

(失败) /t:Package消息如下所示:

代码语言:javascript
复制
...
/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在Windows机器上与MSBuild一起工作得很好。

注意:我发现如果我在.csproj文件中添加一个空目标,比如

代码语言:javascript
复制
[Target Name="Package"\]
[/Target]

它不再抱怨缺少目标,但什么也不做:

代码语言:javascript
复制
...
/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帮助将是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2015-06-27 05:53:57

所以我的问题是,为什么在项目中找不到名为“Package”的塔吉特?我已经证实了/t:Package在Windows机器上与MSBuild一起工作得很好。

xBuild不是100%替代MSBuild。MSBuild现在已经被开源了,并且正在做的工作就是在xplat世界里玩的很好,但是它还没有出现.

因此,当xbuild抱怨您的项目中缺少包目标时,这是因为它没有在xbuild可用的“开箱即用”的目标中定义。它很可能被写成一个平台依赖的动态链接库,MSBuild加载/执行,并且没有关于他们正在做什么的公共信息,因此在Xamarin上从来没有得到任何关注,和/或没有足够的人需要这个特性。此外,/t:package还创建了像"myApp.deploy.cmd“这样的文件,这些文件不能在*nix上工作.

因此,您在正确的轨道上,添加一个包目标到您的项目,并定义您需要它做的任务,以模拟内置的Web打包基础设施包在Windows上所做的事情,但在xplat env中。我假设一些消息、路径组合、exec和复制任务来创建/移动zip文件。如果您确实需要"myApp.SetParameters.xml“文件,您也可以执行该任务。

xbuild v12预定义目标在"Microsoft.Common.targets"

代码语言:javascript
复制
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.BuildT.中定义) :

代码语言:javascript
复制
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"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31078768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档