【问题标题】:Copying from a folder(using relative path) to approot从文件夹(使用相对路径)复制到 approot
【发布时间】:2016-01-14 02:40:08
【问题描述】:

解决方案文件夹中有两个文件夹(但未添加到解决方案中),我想将它们复制到该辅助角色的 approot 中。这些文件夹包含我不想包含在解决方案中的 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>    

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

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

请建议使用相对路径将外部内容复制到 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\'。

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      • 2019-10-15
      • 1970-01-01
      • 2013-01-31
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      相关资源
      最近更新 更多