gpt4 book ai didi

.net - 如何在解决方案上选择性地使用 dotnet pack

转载 作者:行者123 更新时间:2023-12-04 02:28:13 25 4
gpt4 key购买 nike

我有一个解决方案 foo.sln .其中的所有库都是 SDK 项目。然而,其中只有一个应该是 包装

默认情况下

dotnet pack

尝试打包所有项目。没有排除过滤器或包含过滤器。推荐的流程是什么?

最佳答案

您可以通过在 csproj 中设置属性来选择要打包为 nuget 包的项目。文件,像这样:
<IsPackable>true</IsPackable> - 创建包
<IsPackable>false</IsPackable> - 不要创建包

如果您不想在每个文件中指定它,您可以创建一个名为 Directory.Build.props 的文本文件。在具有以下内容的目录中:

<Project>
<PropertyGroup>
<IsPackable>false</IsPackable>
</PropertyGroup>
</Project>

它将自动包含在此文件夹和所有嵌套文件夹中 SDK 项目文件 (csproj) 开头的所有内容中,因此您可以为这组项目指定通用默认值,如果需要,可以在单个 csproj 文件中覆盖它们。

如果您不希望它们被覆盖或需要使用 csproj 中定义的某些值,则应使用文件名 Directory.Build.targets ,它将自动包含在 csproj 的末尾。

在我们的项目中,我们使用以下结构:
 \
\src
<actual projects>
Directory.Build.props
\tests
<unit tests>
Directory.Build.props
Directory.Build.props
MySolution.sln

通过这种方式,我们能够为测试项目和常规项目指定不同的公共(public)属性。

需要注意的是,默认情况下只有第一个 Directory.Build.propscsproj 找到的将被应用,要更改此行为,您需要在嵌套 Directory.Build.props 的开头添加此行文件(在 Project 标签内):
  <Import Project="$([MSBuild]::GetPathOfFileAbove('$(_DirectoryBuildPropsFile)', '$(MSBuildThisFileDirectory)../'))" />

有关所有这些的更多信息可以在这里找到: https://docs.microsoft.com/en-us/visualstudio/msbuild/customize-your-build?view=vs-2017

关于.net - 如何在解决方案上选择性地使用 dotnet pack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46540851/

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