2017-09-01 48 views
0

这里是我的A.csproj的一部分:DOTNET发布不包括后生成事件过程中生成的文件

<ItemGroup> 
    <Content Include="..\..\Payloads\**\*.*"> 
     <Link>Payloads\%(RecursiveDir)%(FileName)%(Extension)</Link> 
     <CopyToOutputDirectory>None</CopyToOutputDirectory> 
     <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> 
    </Content> 
    </ItemGroup> 

Payloads目录是从项目A

B.csproj 

<PropertyGroup> 
    <PostBuildEvent> 
     xcopy /I /S /R /Y /d $(TargetDir)*.* $(SolutionDir)Payloads\Content 
    </PostBuildEvent> 
    </PropertyGroup> 

引用的项目B创建Payloads目录在我运行时不存在publish目录中dotnet publish

信息

dotnet SDK version 2.0, ASP.NET Core 2.0 on .NET 461 framework 

好像发布内容构建之前计算。当我运行dotnet发布时,如果Payloads存在,它会正确部署。这只是我的项目的简单例子。 我该如何解决这个问题?

回答

0

我更换

<ItemGroup> 
    <Content Include="..\..\Payloads\**\*.*"> 
     <Link>Payloads\%(RecursiveDir)%(FileName)%(Extension)</Link> 
     <CopyToOutputDirectory>None</CopyToOutputDirectory> 
     <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> 
    </Content> 
    </ItemGroup> 

随着

<Target Name="AddPayloadsFolder" AfterTargets="AfterPublish"> 
     <PropertyGroup> 
      <PayloadsDirectory>$(SolutionDir)Payloads</PayloadsDirectory> 
     </PropertyGroup> 
     <Exec Command="xcopy.exe /I /S /R /Y /d $(PayloadsDirectory) $(PublishDir)Payloads" Condition="!Exists('$(PublishDir)Payloads')" /> 
     <Exec Command="xcopy.exe /I /S /R /Y /d $(PayloadsDirectory) $(PublishUrl)Payloads" Condition="!Exists('$(PublishUrl)Payloads')" /> 
     </Target> 

与PublishUrl的版本的Visual Studio。它使用它来兼容。