6

我们连续交付建立,直到最近,使用下面的命令提供服务织物包解决方案级别即命令命令行包服务织物应用

msbuild SFSolution.sln /t:Package 

失败,因为目标不存在。

随着我们的依赖关系网格的增长,它达到了没有解决方案文件(to work around the "OutputPath does not exist" red herring)时大多数接口项目都无法生成的程度。似乎有一种方法可以做到这一点according to this answer。不幸的是,而像清洁工作目标......

msbuild SFSolution.sln /t:SFApplication:Clean 
(…snip…) 
Build succeeded. 
    0 Warning(s) 
    0 Error(s) 

...目标包不会!

msbuild SFSolution.sln /t:SFApplication:Package 
(…snip…) 
Build FAILED. 
"SFSolution.sln" (SFApplication:Package target) (1) -> SFSolution.sln.metaproj : 
     error MSB4057: The target "SFApplication:Package" does not exist in the 
     project. [SFSolution.sln] 
    0 Warning(s) 
    1 Error(s) 

(解决方案/项目文件夹/名称省略/改写为清楚起见,如果需要的话我可以提供实际的日志。)

所以现在的问题是:我怎么可能,使用命令行,打造一个项目使用目标和解决方案文件?

我该如何从命令行打包Service Fabric应用程序?

回答

1

MSBuild仅支持可在解决方案级别指定的一小组目标名称。正如你发现的那样,Package不是其中之一。您需要对MSBuild执行两个单独的调用:一个调用解决方案,另一个调用sfproj上的Package对象。 sfproj的Package目标对Build目标具有依赖性,因此它将确保构建sfproj及其项目依赖关系。

+0

这不起作用。如果我一个接一个跑完一个,就没有变化。请参阅http://pastebin.com/uMjdSJ1Q行:[1]构建CLI [296]程序包CLI [542]第一个OutputPath错误[629]上一个错误 – Ekevoo

+3

根据构建输出,您的解决方案配置配置为使用AnyCPU。 .sfproj及其引用的项目被配置为使用x64。您需要适当更新解决方案配置。 –

+0

当我这样做时仍存在同样的问题。 http://pastebin.com/k8jzm853 – Ekevoo

0

我遇到了同样的问题,并通过更改失败项目中的Platform来明确构建x64来修复它。

单击Build>Configuration Manager并确保为x64平台编译程序集,还应该在相应的.csproj文件中设置输出路径。 enter image description here

正在执行的实际命令行操作是这样的:

"C:\Program Files (x86)\MSBuild\14.0\bin\amd64\msbuild.exe" "C:\agent\_work\1\s\Project\SFProject.sfproj" /t:Package /p:platform="x64" /p:configuration="release" /p:VisualStudioVersion="14.0"

0

,你有我们有完全相同的问题,我一直在四处寻找一个解决方案都在网上和做了一些实验。这些是我们工作的步骤:

  1. 请勿在StackOverflow上的其他答案中建议的任何位置手动添加目标。不必要。特别是在CI环境中,您想要单独构建项目。
  2. 准备项目,在解决方案:更改目标平台为所有项目到x64
  3. 生成应用程序

msbuild.exe SFAplication.xproj /p:Configuration=Release /target:rebuild

  • Package中的应用
  • msbuild.exe SFAplication.sfproj /p:Configuration=Release /target:Package

    1

    使用bel ow脚本。

    C:\ Program Files文件(x86)的\微软的Visual Studio 14.0>的MSBuild “Fabric.sfproj”/ T:包装/ P:配置=释放

    服务结构需要的目标在x64平台设置, 因此,将所有参考项目的目标更改为x64平台。

    您可以通过使用解决方案的配置属性来完成此操作。如果x64未在“配置属性”中列出,请在所需项目的同一窗口和平台列下单击配置管理器,然后将新项目平台添加为x64。

    希望这对你有用。