我正在使用Visual Studio将WebJob部署到Azure,但项目的构建输出文件夹中的子目录都没有复制到Azure(根据在FTP文件夹中查找并且由于应用程序未正确执行) 。有没有办法让部署复制所有文件和文件夹?
更多信息:子目录来自引用的项目,文件确实设置了“始终复制”。它们确实出现在WebJob项目的输出构建目录中
更新 所以似乎在某些时候这是固定的,现在按预期工作
答案 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)
感谢您报告此事。它看起来像工具中的一个错误。我为它提交了一个错误。