我正在使用 Visual Studio 将 WebJob 部署到 Azure,但项目的构建输出文件夹中的任何子目录都没有复制到 Azure(根据在 FTP 文件夹中查找以及由于应用程序未正确执行) 。有什么方法可以让部署复制所有文件和文件夹吗?
更多信息:子目录来自引用的项目,并且文件确实设置了“始终复制”。它们确实出现在 WebJob 项目的输出构建目录中
更新: 所以看来在某个时候这个问题已经被修复并且现在可以按预期工作
最佳答案
我编写了一个自动化部署,到目前为止似乎可以正常工作:
将您的 WebJob 项目添加为网站项目的构建依赖项
我将 WebJob 部署到独立的 Azure 网站,因此该网站没有直接引用该项目。我不希望 WebJob 项目的构建输出包含在网站的 bin 中,而只希望包含正确的 app_data 路径。如果您不担心 MSBuild 兼容性,可以使用 Visual Studio 设置构建依赖项。或者您可以编辑网站项目并添加其他 <Reference>
的引用标签:
<ProjectReference Include="..\PathToJobs\Jobs.csproj">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
在 PostBuild 上,将 WebJob bin 输出复制到神奇的 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 magic 文件夹
(参见: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 发布配置文件部署网站。完成!
关于azure - 为 Azure WebJob 部署子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26840167/