部署Azure WebJob的子文件夹

时间:2014-11-10 09:09:41

标签: azure azure-webjobs

我正在使用Visual Studio将WebJob部署到Azure,但项目的构建输出文件夹中的子目录都没有复制到Azure(根据在FTP文件夹中查找并且由于应用程序未正确执行) 。有没有办法让部署复制所有文件和文件夹?

更多信息:子目录来自引用的项目,文件确实设置了“始终复制”。它们确实出现在WebJob项目的输出构建目录中

更新 所以似乎在某些时候这是固定的,现在按预期工作

2 个答案:

答案 0 :(得分:4)

我一起攻击了迄今为止似乎工作的自动部署:

将您的WebJob项目作为构建依赖项添加到您的网站项目

我将我的WebJob部署到独立的Azure网站,因此该网站没有直接引用该项目。我不希望WebJob项目的构建输出包含在网站的bin中,只是正确的app_data路径。如果您不担心MSBuild兼容性,可以使用Visual Studio设置构建依赖项。或者,您可以编辑网站项目并使用其他<Reference>标记添加引用:

<ProjectReference Include="..\PathToJobs\Jobs.csproj">
  <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>

在PostBuild上,将WebJob bin输出复制到magic app_data文件夹

WebJobs应该在app_data\jobs\[type]\[name],因此我们将WebJob bin复制到网站项目中的该文件夹:

set webjob_dist_path=$(ProjectDir)app_data\jobs\continuous\Job
IF EXIST "%webjob_dist_path%" (
  RMDIR "%webjob_dist_path" /S /Q
)
XCOPY "$(SolutionDir)Jobs\bin\$(ConfigurationName)\*" "%webjob_dist_path" /Q /E /I /Y

告诉网站在部署

时包含WebJob魔术文件夹

(见:How do you include additional files using VS2010 web deployment packages?

<PropertyGroup>
  <CopyAllFilesToSingleFolderForPackageDependsOn>
    CustomCollectFiles;
    $(CopyAllFilesToSingleFolderForPackageDependsOn);
  </CopyAllFilesToSingleFolderForPackageDependsOn>
  <CopyAllFilesToSingleFolderForMsdeployDependsOn>
    CustomCollectFiles;
    $(CopyAllFilesToSingleFolderForPackageDependsOn);
  </CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>
<Target Name="CustomCollectFiles">
  <ItemGroup>
    <_CustomFiles Include="app_data\jobs\**\*" />
    <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
      <DestinationRelativePath>%(RelativeDir)%(Filename)%(Extension)</DestinationRelativePath>
    </FilesForPackagingFromProject>
  </ItemGroup>
</Target>

使用常规Azure发布配置文件部署网站。完成!

答案 1 :(得分:3)

感谢您报告此事。它看起来像工具中的一个错误。我为它提交了一个错误。