【问题标题】:Is WindowsAzure.targets ValidateServiceFiles an essential build step?WindowsAzure.targets ValidateServiceFiles 是必不可少的构建步骤吗?
【发布时间】:2013-05-29 08:58:56
【问题描述】:

我们的 azure 构建存在问题,因此只有在 csdef 文件的 WebRole/Contents/Content/SourceDirectory 部分中使用绝对路径时才能使其正常工作。虽然它确实支持相对路径(包括'..')和环境变量(!在 SET 中是的),但问题是我们无法获得任何非绝对路径来成功构建,因为 .csdef 文件似乎被“验证”了两次:一次它在打包之前位于项目目录中,然后再次移动到 /bin 文件夹。显然,如果我们从两个不同的地方开始,没有一个相对路径能够解析到相同的内容目录!您可以做的是为两个构建步骤阶段中的一个阶段设置正确的路径......但随后它将在另一个阶段失败。违规目标是调用 ValidateServiceFiles 任务的 PreValidateServiceModel。

为了使我的项目使用相对路径构建,我需要禁用 PreValidateServiceModel 目标。包装似乎可以工作,尽管我担心跳过目标会错过一些重要的过程(除了显而易见的......服务文件没有经过验证!)。也就是说 .csdef 文件仍然是“经过验证的”,因为它必须被解析才能创建包。

【问题讨论】:

    标签: azure msbuild


    【解决方案1】:

    我遇到了类似的问题。检查documentation on the Source directory element of the WebRole schema,我看到支持目录路径中的环境变量扩展。这使我得到了以下解决方案。

    在包含 csdef 文件的项目的预构建事件中,我将文件从 UpdaterFiles 目录复制到 Temp 目录下的目录:

    IF NOT EXIST %TEMP%\UpdaterFiles MKDIR %TEMP%\UpdaterFiles
    XCOPY $(ProjectDir)..\UpdaterFiles\*.* %TEMP%\UpdaterFiles\ /Y
    

    那么我的源码目录就变成了:

    <SourceDirectory path="%TEMP%\UpdaterFiles" />
    

    上面的工作就像一个魅力

    【讨论】:

      【解决方案2】:

      这是一个不同的解决方案,它避免复制到 temp。

      如前所述,问题在于相对路径在两个不同的地方不起作用:

      1. ProjectFolder\ServiceDefinition.csdef
      2. ProjectFolder\bin\Debug\ServiceDefinition.csdef
      

      所以我将 ServiceDefinition.csdef 的源位置向下移动了两个文件夹级别,以便在两种情况下都可以使用相同的相对路径:

      1. ProjectFolder\Service\Definition\ServiceDefinition.csdef
      2. ProjectFolder\bin\Debug\ServiceDefinition.csdef
      

      为此,我编辑了项目文件(右键单击,“编辑项目文件”)并进行了更改:

      <ServiceDefinition Include="ServiceDefinition.csdef" />
      

      进入:

      <ServiceDefinition Include="Service\Definition\ServiceDefinition.csdef" />
      

      我在 Windows 资源管理器中创建了这两个子文件夹并将文件移动到新位置。然后我重新加载了项目。

      我注意到 Visual Studio 自动为我添加了这两行:

      <Folder Include="Service\" />
      <Folder Include="Service\Definition\" />
      

      在我的 ServiceDefinition.csdef 文件中,我通过上三个文件夹到解决方案文件夹来引用源目录,然后从那里导航:

      <SourceDirectory path="..\..\..\MySourceProject\MySourceFolder" />
      

      【讨论】:

        猜你喜欢
        • 2023-03-07
        • 1970-01-01
        • 2011-12-05
        • 2018-06-08
        • 2018-08-07
        • 1970-01-01
        • 1970-01-01
        • 2018-10-20
        • 1970-01-01
        相关资源
        最近更新 更多