给出带有文件夹的aspnet项目:
/
/sql
/WebApp
/Client
/wwwroot
/Views
Run Code Online (Sandbox Code Playgroud)
在project.json我用过
"publishOptions": {
"include": [
"..\\sql",
"wwwroot",
"Views",
"web.config"
]
}
Run Code Online (Sandbox Code Playgroud)
后dotnet publish有sql,wwwroot和Views文件夹.
迁移到csproj(Microsoft.NET.Sdk.Web)后,我得到了
<None Update="..\sql\**\*;wwwroot\**\*;Views\**\*">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</None>
Run Code Online (Sandbox Code Playgroud)
之后msbuild15 /t:publish(cli不适合我)有wwwroot,只有文件里面的ViewsAND .复制但展平的文件.Clientjsonsql
我也尝试将其更改为:
<Content Include="..\sql\**" CopyToPublishDirectory="PreserveNewest" />
<Content Remove="Client\*" CopyToPublishDirectory="Never" />
Run Code Online (Sandbox Code Playgroud)
得到相同的输出.
如何删除Client和保留文件夹结构sql?
Mar*_*ich 11
更新:
使用VS 2017> = 15.3或.NET CLI版本> = 2.0时,有一项新功能可自动Link为少数已知项类型(包括Content)添加元数据.这可以像:
<Content Include="..\sql\**" LinkBase="sql" />
Run Code Online (Sandbox Code Playgroud)
原版的:
你可以用这个:
<ItemGroup>
<Content Remove="Client\**" />
<Content Include="..\sql\**" CopyToPublishDirectory="PreserveNewest" Link="sql\%(RecursiveDir)\%(Filename)%(Extension)" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
内容包括项目的链接元数据是一些黑客,使MSBuild使用项目的相对路径作为目标路径.这是因为AssignTargetPath如果没有Link元数据(源),则不考虑"项目锥"之外的项目.
替代<Content Remove="..." />你也可以这样做仍然在VS内的文件:
<Content Update="Client\**" CopyToPublishDirectory="Never" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5271 次 |
| 最近记录: |