2017-04-23 95 views
1

與文件夾鑑於ASPNET項目:DOTNET核心發佈:包含/排除在輸出目錄

/ 
    /sql 
    /WebApp 
    /Client 
    /wwwroot 
    /Views 

在project.json我用

"publishOptions": { 
    "include": [ 
     "..\\sql", 
     "wwwroot", 
     "Views", 
     "web.config" 
    ] 
    } 

並經過dotnet publishsqlwwwrootViews文件夾。

遷移的csproj(Microsoft.NET.Sdk.Web)後,我得到了

<None Update="..\sql\**\*;wwwroot\**\*;Views\**\*"> 
     <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> 
</None> 

msbuild15 /t:publish(CLI沒有爲我的作品)有wwwrootViewsClient裏面只有json文件。來自sql的文件被複制但變平。

我也嘗試將其更改爲:

<Content Include="..\sql\**" CopyToPublishDirectory="PreserveNewest" /> 
<Content Remove="Client\*" CopyToPublishDirectory="Never" /> 

,得到了相同的輸出。

如何刪除Client並保留sql的文件夾結構?

回答

3

更新:

當使用VS 2017> = 15.3或.NET CLI版本> = 2.0,有一個新的功能,它自動增加Link元數據幾個已知的項目類型(包括Content)。這可以用於像:

<Content Include="..\sql\**" LinkBase="sql" /> 

原文:

您可以使用此:

<ItemGroup> 
    <Content Remove="Client\**" /> 
    <Content Include="..\sql\**" CopyToPublishDirectory="PreserveNewest" Link="sql\%(RecursiveDir)\%(Filename)%(Extension)" /> 
    </ItemGroup> 

內容包括項目的鏈接元數據是有點黑客攻擊,使MSBuild的使用該項目的相對路徑作爲目標路徑。這是因爲「項目圓錐體」之外的項目如果沒有Link元數據(source),則不會在AssignTargetPath中考慮。

替代<Content Remove="..." />你也可以做到這一點還是有內部VS文件:

<Content Update="Client\**" CopyToPublishDirectory="Never" /> 
+0

然而,這表明在'SoultionExplorer sql'文件夾,所以我'<複製SourceFiles =「@替換它(FilesToCopy )「DestinationFolder =」$(TargetDir)\ sql \%(RecursiveDir)「SkipUnchangedFiles =」true「OverwriteReadOnlyFiles =」true「ContinueOnError =」false「/> 'AfterTargets = Publish – smg

+0

您也可以設置Visible =」false「在Content Include元素上隱藏解決方案資源管理器中的文件。 –

相關問題