gpt4 book ai didi

msbuild - dotnet核心发布: include/exclude dir in output

转载 作者:行者123 更新时间:2023-12-03 16:44:09 25 4
gpt4 key购买 nike

给定aspnet项目的文件夹:

/
/sql
/WebApp
/Client
/wwwroot
/Views

在我使用的project.json上
"publishOptions": {
"include": [
"..\\sql",
"wwwroot",
"Views",
"web.config"
]
}

dotnet publish之后,有 sqlwwwrootViews文件夹。

迁移到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的文件夹结构?

最佳答案

更新:

使用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使用项目的相对路径作为目标路径。这是因为如果没有 AssignTargetPath元数据( source),则不在 Link中考虑“项目锥”之外的项目。

除了 <Content Remove="..." />之外,您还可以执行以下操作以使VS中仍包含文件:
<Content Update="Client\**" CopyToPublishDirectory="Never" />

关于msbuild - dotnet核心发布: include/exclude dir in output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43569821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com