从文件夹(使用相对路径)复制到批准

时间:2015-10-01 15:10:10

标签: c# azure azure-web-roles azure-worker-roles

解决方案文件夹中有两个文件夹(但未添加到解决方案中),我想将其复制到该工作人员角色的批准中。这些文件夹包含dll和其他文件,我不想将其包含在解决方案中并将其标记为“内容”。

我正在使用Azure 2.4 SDK。我在msdn上阅读了content element并尝试使用内容元素来实现这一点。如下所示:

<Contents>
  <Content destination="\EnterpriseLibraries_5_0">
    <SourceDirectory path="..\..\EnterpriseLibraries\EnterpriseLibraries_5_0\" />     
  </Content>
  <Content destination="\EnterpriseLibraries_6_0">
    <SourceDirectory path="..\..\EnterpriseLibraries\EnterpriseLibraries_6_0" />
  </Content>
</Contents>    

但是每次都无法找到源目录。我一直在为这些文件夹创建相对路径。

作为第二种方法,我将这些文件夹内容作为post build活动复制到$ Outdir中。但是postbuild事件对于复制到approot的内容没有影响。

请使用相对路径建议实现此外部内容副本的方式。

更新:在内容元素中添加源目录的物理路径可以很好地工作。但是我无法创建相对路径,无法弄清楚“相对路径”是如何“相对”到哪个文件夹。

回到相对路径问题: 似乎相对的基础路径不断变化。它有时从\\ bin \ debug开始,如果我在下一次构建期间以某种方式创建相对路径获取此基本路径\成为基本路径。

我在构建路径期间一直收到错误:

尝试1: ServiceDefinition.csdef(0,0):错误CloudServices089:在角色WCFWorker中找不到源目录'D:\ a \ b \ c \ d \ aa \ aa \ bin \ Debug .... \ ExternalLib \ EnterpriseLibraries_5_0 \'。

尝试2: ServiceDefinition.csdef(0,0):错误CloudServices089:在角色WCFWorker中找不到源目录'D:\ a \ b \ c \ d \ aa \ aa ........ \ ExternalLib \ EnterpriseLibraries_5_0 \'。

1 个答案:

答案 0 :(得分:0)

使用hack可以在构建时获得完整路径的解决方案:

在ccproj文件中,您可以使用https://stackoverflow.com/a/20014410/413672中定义的 SetEnvironmentVariableTask 设置环境变量,如下所示:

<Target Name="BeforePackageComputeService">
  <SetEnvironmentVariableTask Name="CCPROJ_DIR" Value="$(MSBuildThisFileDirectory)" />
</Target>

最后,引用%CCPROJ_DIR% xml元素的path属性中的SourceDirectory变量。