Подтвердить что ты не робот

Добавление дополнительных файлов в опубликованный проект MVC API

Я пытаюсь добавить дополнительный XML файл в процесс публикации. У меня есть проект MVC API, который также имеет другой проект (V1.0) для контроллеров. Мы используем функцию самостоятельной документирования, которая создает файлы .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 у него есть dll apiprojectv1, но не файл 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:

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

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

Я не получаю файл, но теперь получаю сообщение об ошибке, когда файл не найден (теперь я могу его отлаживать).

4b9b3361

Ответ 1

Я пропустил две вещи:

  • Вторая группа свойств, чтобы фактически сказать ей, чтобы выполнить действие.
  • Путь был неправильным, пришлось использовать путь к каталогу проекта

Теперь выглядит так:

<?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>