从 .ccproj (Azure SDK 2.9) 引用运行时内容

Referencing runtime content from .ccproj (Azure SDK 2.9)

我有一个工作者角色,其中包含对一些 nuget 包的引用,这些包将一些需要的运行时文件作为 post-build 步骤放到项目 bin 文件夹中。

我面临的问题是这些文件没有被复制到已发布的辅助角色,因为辅助角色 .csproj 没有跟踪它们

工作者角色.csproj:

...
<Import Project="[path-to-nupkg]\build\package.targets" Condition="Exists('[path-to-nupkg]\build\package.targets')" />

package.targets复制post-构建资源,所以构建后worker role bin文件夹包括:

MyWorkerRole.dll
resource.txt
Resources\another_resource.txt

但是,打包用于部署的辅助角色时,WorkerRole.cspkg 仅包含 MyWorkerRole.dll

我试图通过将以下内容添加到我的 .ccproj 中来遵循 Dynamically Add Content to Windows Azure Application Roles

  <Target Name="BeforeAddRoleContent">
    <ItemGroup>
      <AzureRoleContent Include="Resources\*">
        <RoleName>MyWorkerRole</RoleName>
      </AzureRoleContent>
    </ItemGroup>
  </Target>

但是文件夹并没有被删除,我在打包过程中也没有遇到任何错误。

编辑:有人建议我尝试使用 Role Content Folders,但我的问题是资源来自 Nuget 包。因此至少在构建时间之前不可用(实际上作为 post-build 任务被删除)。

我检查了Dynamically Add Content to Windows Azure Application Roles,发现用于存储文件的附加文件夹应该位于您的 Azure 云服务项目中,如下所示:

然后编辑您的云服务 .ccproj 并覆盖 BeforeAddRoleContent 目标,如下所示:

您的云服务项目打包后,您可以查看打包内容如下:

根据您的要求,您可以使用构建事件并将文件复制到 Azure 云服务项目中的 AdditionalContent 文件夹中。