gpt4 book ai didi

.net - 当 NuGet 包具有 Grpc.Core 作为依赖项时,二进制文件被添加到项目中

转载 作者:行者123 更新时间:2023-12-04 02:49:17 35 4
gpt4 key购买 nike

我遇到了一个有趣的问题,它可能是我目前对 NuGet 不了解的问题,但我正在创建一个 NuGet 包,我将其称为 Project Alpha,它依赖于 Grpc ,在扩展中,它依赖于有问题的包:Grpc.Core .
Grpc.Core , 通过 Grpc在 Project Alpha 中安装良好,并且不会向 Project Alpha 的项目添加新文件。另一方面,Project Beta 依赖于 Project Alpha,在扩展中 Grpc.Core .当我安装Project Alpha时,安装Grpc.Core在 Project Beta 中导致以下项目树

ProjectBeta
|- Properties/
|- References/
|- App.config
|- grpc_csharp_ext.x64.dll
|- grpc_csharp_ext.x86.dll
|- libgrpc_csharp_ext.x64.dylib
|- libgrpc_csharp_ext.x64.so
|- libgrpc_csharp_ext.x86.dylib
|- libgrpc_csharp_ext.x86.so
|- packages.config
|- Program.cs

您会注意到它安装了 6 个我不希望 1) 包含在项目中或 2) 在项目根目录中的二进制文件。

看了之后 Grpc.Core.nupkg ,我发现这6个二进制文件来自 runtimes文件夹;然而,只有一个 .targets文件引用了它们并明确表示要复制到输出目录。应该注意的是,它将通过将这些文件复制到输出目录来正确构建。

更多引用:

项目 Alpha 依赖树
Project Alpha
|- Grpc
| |- Grpc.Core
|- Google.Protobuf

运行后产生以下 nupkg nuget pack ProjectAlpha.csproj -Properties Configuration=Release
content
|- grpc_csharp_ext.x64.dll
|- grpc_csharp_ext.x86.dll
|- libgrpc_csharp_ext.x64.dylib
|- libgrpc_csharp_ext.x64.so
|- libgrpc_csharp_ext.x86.dylib
|- libgrpc_csharp_ext.x86.so
lib
|- net452
|- ProjectAlpha.dll

最终,似乎我需要弄清楚如何处理这些二进制文件,以便它们不再被打包为 content文件,但我不确定是什么导致了这个问题。理想情况下,我想要一个解决方案,而不仅仅是“你为什么不从它构建后删除文件?”。如果那最终是唯一的解决方案,那么我会这样做;但是,我认为这不是真正的解决方案。

有任何想法吗?建议?黑客?

最佳答案

我找到了解决这个问题的方法。我曾尝试使用 .nuspec并排除二进制文件,但这不起作用,我实际上在安装 NuGet 包时遇到了问题。

我发现的最好方法(因为它对我有用)是使用 nuget pack 的命令行参数。我之前错过的,是 -Exclude .

所以我用来打包.csproj的最后一条命令是

nuget pack ProjectAlpha.csproj -Exclude **\*.x86.*;**\*.x64.*

如果解决方案不清楚, nuget pack将打包在输出目录( bin\Debugbin\Release )中找到的所有内容,并且出现问题是因为有 6 个二进制文件,NuGet 不知道其来源。我知道它们是通过 .targets 复制的文件在 Grpc.Core的 NuGet 包。所以,他们需要被排除在外,因为 .targets文件将在任何包含 Grpc.Core 的后续项目中正确复制它们。 .因此, -Exclude工作。

我仍然不知道为什么在这种情况下它比 .nuspec 更有效exclude 属性,但我很高兴它已解决!

关于.net - 当 NuGet 包具有 Grpc.Core 作为依赖项时,二进制文件被添加到项目中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41941588/

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