簡體   English   中英

MsBuild Target不起作用

[英]MsBuild Target doesn't work

從Visual Studio 2017在服務器上發布后,我想更改.csproj文件以執行我的目標。

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

但這是行不通的。 我在發布輸出中看不到目標已執行。 我做錯了什么?

在閱讀了有關部署Web應用程序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>

MsBuild Target不起作用

您可以從File System發布項目。 File System不支持目標“ MSDeployPublish”。

“從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>

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM