也许我老了,但我真的很困惑如何在 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 的一部分吗? .nuget 中的某些配置?
最好的,
托比亚斯
最佳答案
我怀疑您的项目不是 .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/