gpt4 book ai didi

nuget - 创建包含多个 DLL 的 nuget 包

转载 作者:行者123 更新时间:2023-12-03 06:23:56 24 4
gpt4 key购买 nike

假设我有一个具有以下结构的项目:

MyLibrary\
MyLibrary.sln
MyLibrary.Core\
MyLibrary.Core.csproj
MyLibrary.Extensions\
MyLibrary.Extensions.csproj
MyLibrary.Tests\
MyLibrary.Tests.csproj

我想创建一个包含 MyLibrary.Core.dll 和 MyLibrary.Extensions.dll 的 NuGet 包。我似乎不知道如何让 NuGet 做到这一点。我尝试过手动构建规范文件,并尝试使用“nuget spec MyLibrary.Core.csproj”构建一个规范文件。我尝试将所有 DLL 添加到 lib/文件夹中,我认为这是将 DLL 添加到包的基于约定的机制。在每种情况下,我都可以将 MyLibary.Core.dll 放入包中,但 MyLibrary.Extensions.dll 最终不会与其一起打包。

TLDR:创建具有多个项目/程序集的 NuGet 包的最佳实践是什么?有没有专门针对此问题的教程?我发现的教程都集中于简单的单个项目演示。

最佳答案

您将在单个项目(或 nuspec 文件)上运行 NuGet,但它支持通过 file element 指向其他项目的指针。 。此元素使用项目的引用名称,因此您可以避免 a) 查找其他项目文件的位置,以及 b) 将文件复制到特定位置作为构建后步骤。

假设您有一个 MyLibrary.Core.csproj 的 nuspec 文件,并且它引用了 MyLibrary.ExtensionsMyLibrary.Tests,以便它们构建后最终位于 bin 目录中:

<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
...
</metadata>
<files>
<file src="bin\Release\MyLibrary.Extensions.dll" target="lib\net40" />
<file src="bin\Release\MyLibrary.Tests.dll" target="lib\net40" />
</files>
</package>

通过此设置,所有引用都应位于 NuGet 包中的适当位置。那里仍然有硬编码的“发布”,但我打赌很可能不会分发其调试版本的 NuGet 包。

关于nuget - 创建包含多个 DLL 的 nuget 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7486651/

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