c# - Linux 上的 Nuget 和 dotnet - 使用/打包提供的包

标签 c# .net linux nuget nuget-package

也许我老了,但我真的很困惑如何在 Linux 上使用 nupkg。为 C 解决和安装依赖项/添加库对我来说更容易(从来没有想过我会这么说)。

我从供应商那里得到了一个包 (YYYYY_linux.3.0.77.nupkg) 并想运行他们的示例代码(带有 visual studio 的 Windows 版本开箱即用)但他们告诉我他们的 linux 包也可以。

我做了什么:

dotnet init
... coding ...
dotnet restore
dotnet build

/home/tobiass/code/XXXX/Program.cs(27,11): error CS0246: The type or namespace name 'YYYYY' could not be found (are you missing a using directive or an assembly reference?)

之后我尝试了两件事:

1.

我编辑了 NuGet.Config

dotnet restore

The nupkg shows up as a feed. But I still get the same error.


2.

我还尝试创建一个本地提要

mono nuget.exe add ../YYYYYYY_linux.3.0.77.nupkg -source ./

但它总是导致

The requested feature is not implemented.

在 Linux 上添加库的正确方法是什么?它也必须是 project.json 的一部分吗? .nu​​get 中的某些配置?

最好的,

托比亚斯

最佳答案

我怀疑您的项目不是 .NET Core 项目,因此您应该使用 nuget.exe 而不是 dotnet。

所以首先我会看一下示例代码。它有 .csproj 文件吗?它有 packages.config 文件吗?它是否有一个包含 .nupkg 文件的包文件夹?如果是这样,则无需执行任何操作,只需编译即可。

从报错信息来看,以上一项或多项都不正确。如果项目文件 (.csproj) 引用了 NuGet 包中的文件并且存在现有的 packages.config 文件,则您需要做的就是恢复包。为此,您需要将 NuGet 包放在某个地方,以便它可以恢复。您可以简单地将 .nupkg 文件复制到 ~/.local/share/NuGet/Cache/ 中,这是所有 NuGet 包的机器缓存,然后通过运行 nuget 将其恢复到项目中恢复 Path/To/YourSolution.sln.

如果项目没有 packages.config 文件,那么您需要将其安装到项目中。最简单的方法是使用 MonoDevelop。它内置了对向项目添加 NuGet 包的支持。

否则,您可以直接解压 .nupkg 文件,然后根据 .csproj 文件中的信息将需要的文件复制到解决方案的包目录中。

关于c# - Linux 上的 Nuget 和 dotnet - 使用/打包提供的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41893551/

相关文章:

c# - Node.js 到 C# 转换

c# - 从客户端 MVC4 检测到潜在危险的 Request.Form 值

c# - SetEntryInHash 与 SetEntryInHashIfNotExists

c# - 使用代码删除 WPF 中的绑定(bind)

linux - 使用脚本文件没有这样的文件或目录

python - 从一个 python 脚本到另一个传递简单参数的简单调用

c# - 我的 SQLParameter 没有正确传递 NULL

asp.net - 基于权限的动态Web表单

c# - 在 C# 中查找有关通过 USB 连接的所有串行设备的信息

linux - 如何更改 Spack 存储 spack-stage 目录的位置?