4

tfs.visualstudio.comでホストされているTFSソース管理リポジトリにバインドされているASP.NETWebAPIプロジェクトと、出力をAzureに公開する継続的インテグレーションビルド(これもtfs.visualstudio.com)があります。CIビルドは適切にトリガーされ、ビルド出力はAzureにデプロイされますが、WebAPIプロジェクトのヘルプページを駆動するXMLドキュメントファイルもデプロイに含める必要があります。

グーグルを行った後、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ドキュメントファイルを公開しません。

チームビルドサーバーと開発ボックスでこれが異なる動作をするのはなぜですか?

4

2 に答える 2

4

http://blogs.msdn.com/b/aaronhallberg/archive/2007/06/07/preserving-output-directory-structures-in-orcas-team-build.aspxによると、チームビルドサーバーは$(OutDir)場所を特定するために使用しますファイルはビルド中に移動する必要があります。開発ボックスでは、通常$(OutputPath)、.projファイルから使用します。

$(OutputPath)通常、プロジェクトフォルダの下のbinフォルダです。カスタムファイル$(OutputPath)の値として(変数を使用せずに)binを指定したようです。代わりに、環境に関係なく、ビルド時に実際の出力パスを取得するIncludeようなものを使用して実験してください。$(OutDir)\**\*.xml

于 2013-02-05T19:27:05.270 に答える
1

XMLドキュメントファイルの公開に必要な唯一の変更は次のとおりです。

<ExcludeXmlAssemblyFiles>False</ExcludeXmlAssemblyFiles>
于 2017-05-10T16:36:20.867 に答える