MsBuild Target не работает - PullRequest
0 голосов
/ 31 мая 2018

Я хочу изменить файл .csproj для выполнения моей цели после публикации на сервере из Visual Studio 2017.

<PropertyGroup>
    <PostBuildEvent>copy $(ProjectDir)\lib\Oracle.ManagedDataAccess.dll $(ProjectDir)\bin</PostBuildEvent>
  </PropertyGroup>
  <PropertyGroup>
    <PreBuildEvent>copy $(ProjectDir)\lib\Oracle.ManagedDataAccess.dll $(ProjectDir)\bin</PreBuildEvent>
  </PropertyGroup>  

  <ItemGroup>
    <OracleSourceFile Include="$(ProjectDir)\lib\Oracle.ManagedDataAccess.dll"/>
    <OracleDestinationFolder Include="$(ProjectDir)\bin"/>
  </ItemGroup>

  <Target Name="OracleTarget" AfterTargets="MSDeployPublish" >        
   <Copy
        SourceFiles="@(OracleSourceFile)"
        DestinationFolder="@(OracleDestinationFolder)">        
    </Copy>
  </Target>

Но это не работает.Я не вижу в результатах публикации, что моя цель была выполнена.Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Прочитав рекомендации Microsoft по развертыванию веб-приложения , особенно на этой странице (где говорится о развертывании дополнительных файлов), я наконец изменил свой .pubxml, как показано ниже:

<Target Name="OracleCollectFiles">
    <ItemGroup>
      <OracleSourceFile Include="lib\**\*" />     
      <FilesForPackagingFromProject Include="%(OracleSourceFile.Identity)">
        <DestinationRelativePath>bin\%(Filename)%(Extension)</DestinationRelativePath>
      </FilesForPackagingFromProject>
    </ItemGroup>
  </Target>

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

    <CopyAllFilesToSingleFolderForMsdeployDependsOn>
      OracleCollectFiles;
      $(CopyAllFilesToSingleFolderForMsdeployDependsOn);
    </CopyAllFilesToSingleFolderForMsdeployDependsOn>
  </PropertyGroup>

</Project>
0 голосов
/ 01 июня 2018

MsBuild Target не работает

Вы можете опубликовать свой проект с File System.Цель "MSDeployPublish" не поддерживается File System.

. "В настоящее время мы не поддерживаем выполнение пользовательских целей после публикации из VS для протокола файловой системы. Если вы публикуете из командной строкиОднако цель будет выполнена. "

Итак, мы могли бы использовать командную строку MSBuild для выполнения этой пользовательской цели, указав цель, /t:OracleTarget:

msbuild "YourSolutionFile" /t:Build,OracleTarget /p:DeployOnBuild=true /p:PublishProfile=YourPublishFile.pubxml

Помимо , другого решения для этой проблемы, вы можете использовать цель CopyAllFilesToSingleFolderForPackage вместо MSDeployPublish:

  <Target Name="OracleTarget" AfterTargets="CopyAllFilesToSingleFolderForPackage" >        
   <Copy
        SourceFiles="@(OracleSourceFile)"
        DestinationFolder="@(OracleDestinationFolder)">        
    </Copy>
  </Target>

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...