4

我有一个 ASP.NET Web API 项目,它绑定到托管在 tfs.visualstudio.com 上的 TFS 源代码控制存储库,以及一个将输出发布到 Azure 的持续集成构建(也在 tfs.visualstudio.com 上)。CI 构建触发正确,构建输出部署到 Azure,但我希望部署还包括 XML 文档文件,因为它们驱动我的 Web API 项目的帮助页面。

做了一些谷歌搜索后,我发现一篇文指出我应该将以下内容添加到我的 pubxml 文件中:

<PropertyGroup>
    <CopyAllFilesToSingleFolderForMsdeployDependsOn>
        CustomCollectFiles;
        $(CopyAllFilesToSingleFolderForMsdeployDependsOn);
    </CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>
<Target Name="CustomCollectFiles">
    <ItemGroup>
        <_CustomFiles Include="bin\**\*.xml" />
        <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
              <DestinationRelativePath>bin\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
        </FilesForPackagingFromProject>
     </ItemGroup>
</Target>

如果我从 Visual Studio 2012 手动发布,则此方法有效,但在我的 CI 构建发布其输出时不起作用。CI 构建不发布 XML 文档文件。

为什么这在 Team Build 服务器上的行为与在我的开发框上的行为不同?

4

2 回答 2

4

根据http://blogs.msdn.com/b/aaronhallberg/archive/2007/06/07/preserving-output-directory-structures-in-orcas-team-build.aspx,您的 Team Build 服务器用于$(OutDir)确定在哪里这些文件应该在您的构建期间进行。在您的开发盒上,它通常使用$(OutputPath).proj 文件。

$(OutputPath)通常是项目文件夹下的 bin 文件夹;看起来您已经指向 bin (不使用$(OutputPath)变量)作为Include自定义文件的值。尝试使用类似的东西$(OutDir)\**\*.xml在构建时获取实际输出路径,而不管环境如何。

于 2013-02-05T19:27:05.270 回答
1

发布 XML 文档文件所需的唯一更改是:

<ExcludeXmlAssemblyFiles>False</ExcludeXmlAssemblyFiles>
于 2017-05-10T16:36:20.867 回答