20

公開プロセスに XML ファイルを追加しようとしています。コントローラー用の別のプロジェクト (V1.0) もある MVC API プロジェクトがあります。各プロジェクトの .XML ファイルを作成する自己文書化ヘルプ機能を使用しています。ローカル マシンでビルドする場合はすべて機能しますが、(ウィザードを使用して) 公開する場合、このファイルは含まれません。

ここで説明されているように、発行プロファイル (.pubxml) ファイルを更新しようとしています。

http://www.asp.net/mvc/tutorials/deployment/visual-studio-web-deployment/deploying-extra-files

しかし、成功しませんでした。次のことが起こっていることがわかります。

  • 何もぶら下がっていないことを確認するために、私はきれいにします。
  • ウィザードで公開
  • apiproject\bin\ には、apiprojectv1 xml および dll ファイルを含むすべてのファイルがあることがわかります
  • apiproject\obj\x86\Release\AspnetCompileMerge\Source\bin に apiprojectv1 dll はあるが xml ファイルがないことがわかります
  • apiprojet\obj\x86\Release\AspnetCompileMerge\TempBuildDir\bin で上記と同じことがわかります
  • apiproject\obj\x86\Release\Package\PackageTmp\bin で上記と同じことがわかります

ファイルがコピーされない理由がわかりません。これは私の完全な pubxml ファイルです:

<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize     the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit     http://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0"     xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <SiteUrlToLaunchAfterPublish />
    <publishUrl>\\myserver\wwwroot\apiproject</publishUrl>
    <DeleteExistingFiles>False</DeleteExistingFiles>
  </PropertyGroup>
  <Target Name="CustomCollectFiles">
        <ItemGroup>
          <_CustomFiles Include="..\bin\apiprojectv1.XML" />
          <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
            <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)    </DestinationRelativePath>
          </FilesForPackagingFromProject>
        </ItemGroup>
  </Target>
</Project>

編集

pubxml ファイルの最後に以下を配置するために、1 つの主要な部分を忘れていました。

 <PropertyGroup>
    <CopyAllFilesToSingleFolderForPackageDependsOn>
      CustomCollectFiles;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForPackageDependsOn>

    <CopyAllFilesToSingleFolderForMsdeployDependsOn>
      CustomCollectFiles;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>

ファイルを取得できませんが、ファイルが見つからないというエラーが表示されます (これでデバッグできます)。

4

1 に答える 1

28

私は2つのことを見逃していました:

  1. アクションを実行するように実際に指示する 2 番目のプロパティ グループ。
  2. パスが正しくありませんでした。プロジェクト ディレクトリ パスを使用する必要がありました

次のようになり、動作します。

<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit     http://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <SiteUrlToLaunchAfterPublish />
        <publishUrl>\\myserver\wwwroot\apiproject</publishUrl>
    <DeleteExistingFiles>False</DeleteExistingFiles>
  </PropertyGroup>

 <Target Name="CustomCollectFiles">
    <ItemGroup>
      <_CustomFiles Include="$(MSBuildProjectDirectory)\bin\apiprojectv1.XML" />
      <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
        <DestinationRelativePath>bin\%(RecursiveDir)%(Filename)%(Extension)    </DestinationRelativePath>
      </FilesForPackagingFromProject>
    </ItemGroup>
  </Target>

  <PropertyGroup>
    <CopyAllFilesToSingleFolderForPackageDependsOn>
      CustomCollectFiles;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForPackageDependsOn>

    <CopyAllFilesToSingleFolderForMsdeployDependsOn>
      CustomCollectFiles;
      $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>

</Project>
于 2013-05-28T15:34:52.563 に答える