使用msbuild命令行构建exe和webapp

时间:2017-11-17 10:25:48

标签: visual-studio msbuild azure-devops

我正在尝试使用ms-build命令行构建一个解决方案,该命令行包含多个项目。

其中四个正在创建一个exe文件作为输出,其余正在创建一个Web应用程序。

现在,当我尝试使用msbuild一起构建它们时,它会抛出错误 -

/p:WebPublishMethod=Package /p:DeployOnBuild=true /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true  /p:outdir="$(build.artifactstagingdirectory)\\"

错误 -

error MSB4057: The target "ResolveWebJobFiles" does not exist in the 
project.

注意 - 如果我删除属性“/ p:WebPublishMethod = Package”,那么它运行良好,但不会创建zip文件。

任何人都可以建议我创建zip文件的任何属性吗?

2 个答案:

答案 0 :(得分:1)

  

任何人都可以建议我创建zip文件的任何属性吗?

您是否使用Azure网站将Web应用程序部署为Azure WebJobs?如果是,您应确保已在Web项目中安装了以下软件包。包ID =" Microsoft.Web.WebJobs.Publish"版本=" 1.0.2"

如果没有,我不太清楚为什么会出现这个错误" 目标" ResolveWebJobFiles"不存在于 项目"在我可以访问您的Web项目之前。但我想为您提供一种解决方法,您可以检查它是否适合您:

编辑*.csproj文件,在项目文件中添加zip目标:

<ItemGroup>
   <Link Include="bin\*.dll" />
    <Link Include="bin\*.exe" />
    <Link Include="bin\*.exe.config" />
</ItemGroup>

<Import Project="..\.build\MSBuild.Community.Tasks.Targets" />

<Target Name="AfterBuild" Condition="'$(Configuration)' == 'Release'">
<PropertyGroup>
<ReleasePath>bin</ReleasePath>
</PropertyGroup>
<Zip Files="@(Content);@(Link)" WorkingDirectory="$(ReleasePath)" ZipFileName="output\$(AssemblyName).zip" ZipLevel="9" />
</Target>

注意:您需要添加nuget包&#34; MSBuildTasks&#34;并且您可以将ReleasePath更改为其他文件夹。

有关详细信息,请参阅this document

答案 1 :(得分:0)

问题在于可以在属性中找到的Webjob-List.json文件。

我正在使用那个缺少的项目的旧引用,删除路径解决了问题。