DeploymentUnpublishable web api with webjob

DeploymentUnpublishable web api with webjob

如何使用 TFS 2012 中的 teambuild 将我在 Visual Studio 2015 年创建的 asp.net web api 项目发布到 Azure?

问题似乎与 msbuild 有关。在本地和构建机器上,只要我在 C:\Program Files (x86)\Microsoft Visual Studio 14.0 中明确使用 msbuild,它就会工作。当我使用 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ 时,它会给出以下输出,说明部署不可发布。

Target "_DeploymentUnpublishable: (TargetId:3)" in file "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets" from project "{poath}WebApi.csproj" (target "Publish" depends on it):
Task "Message" (TaskId:4)
  Task Parameter:Text=Skipping unpublishable project. (TaskId:4)
  Skipping unpublishable project. (TaskId:4)
Done executing task "Message". (TaskId:4)

当我从 TFS 排队构建时,我使用以下参数,

/t:Publish /ToolsVersion:14.0 /p:VisualStudioVersion=14.0 /p:ToolPath="C:\Program Files (x86)\MSBuild.0\Bin" /p:DeployOnBuild=true /p:PublishProfile=azureProfile.pubxml /p:Username=$user /p:Password=password

我从来没有找到解决这个问题的方法,但我能够让下面的 hack 起作用。

  1. 创建一个 csproj 文件
  2. 像下面这样添加一个新的<Target>
    <Target Name="PushPackages">
        <Exec Command=""C:\Program Files (x86)\MSBuild.0\Bin\MSBuild.exe" {WebApiWithWebjob}.csproj /p:DeployOnBuild=true;PublishProfile=Dev.pubxml;VisualStudioVersion=14.0;Password={password}" />
    </Target>
  1. 将 csproj 文件添加为要在构建定义中构建的最后一项