我正在尝试使用Ubuntu上的VS Code在dotnet核心中创建一个可重用的库。 我可以创建库和一组成功运行它的xUnit测试。 所以,我从包含project.json文件的文件夹中做了一个dotnet包,如下所示:
dotnet pack -o / home / me / projects / local-nuget
运行正常并按预期创建了我的foundation.1.0.0.nupkg文件。 (基础是我的图书馆的名称)。 我的“基础”库的project.json文件是:
{
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable"
},
// This is the references section for this assembly
"dependencies": {
"Newtonsoft.Json": "9.0.1"
},
"frameworks": {
"netstandard1.6": {
"dependencies": {
"NETStandard.Library": "1.6.0"
}
}
}
}
然后我创建了一个新项目来使用这个名为app的库。 它有一个global.json文件,如下所示:(我相信这就是找到nuget包的方式....)
{
"sources" : [
"/home/me/projects/local-nuget"
]
}
它有一个project.json文件,如下所示:
{
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable",
"emitEntryPoint": true
},
"dependencies": {
"foundation":"1.0.0"
},
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
}
},
"imports": ["dnxcore50"]
}
}
}
当我执行dotnet还原时,收到以下错误消息:
/home/me/projects/app/project.json中的错误 包基础1.0.0与netcoreapp1.0(.NETCoreApp,Version = v1.0)不兼容。包基础1.0.0支持:net(.NETFramework,Version = v0.0) 一个或多个程序包与.NETCoreApp,Version = v1.0不兼容。 错误:错误:命令失败:dotnet restore“/home/me/projects/app/project.json”
新的“app”是使用“dotnet new”创建的,我所做的唯一更改是在project.json文件中添加依赖项,如上所示。
当我查看我的local-nuget文件夹时,我看到以下内容:
me @ me-desktop:〜/ projects / local-nuget $ ls
foundation.1.0.0.nupkg foundation.1.0.0.symbols.nupkg
所以,我知道dotnet pack命令有效。
这应该不是那么难!创建一个可重用的库然后在新的应用程序中使用它需要什么魔力?我们有很多源代码要转移到dotnet核心,但我们的库结构依赖于重用。
感谢任何帮助。
编辑====================
好的,我也对global.json文件有点怀疑,所以我在项目的根目录添加了一个NuGet.config。 当我进行dotnet恢复时,我得到了同样的错误。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<packageSources>
<add key="NuGet official package source" value="https://nuget.org/api/v2/" />
<add key="LocalSource" value="/home/me/projects/local-nuget" />
</packageSources>
<disabledPackageSources />
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
</configuration>
编辑两个============================================= 我在nuget.config中添加了一行:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<config>
<add key="globalPackagesFolder" value="/home/me/projects/packages" />
</config>
<packageSources>
<add key="NuGet official package source" value="https://nuget.org/api/v2/" />
<add key="LocalSource" value="/home/me/projects/local-nuget" />
</packageSources>
<disabledPackageSources />
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
</configuration>
这会将所有包导入我的“packages”文件夹,包括我的“foundation”包。我觉得一切顺利,直到我做了 dotnet build。
现在我收到一个错误:
Compiling app for .NETCoreApp,Version=v1.0
/usr/share/dotnet/dotnet compile-csc @/home/me/projects/app/obj/Debug/netcoreapp1.0/dotnet-compile.rsp returned Exit Code 1
/home/me/projects/app/error CS0006: Metadata file '/home/me/.nuget/packages/foundation/1.0.0/lib/netstandard1.6/foundation.dll' could not be found. Compilation failed.
当我查看'/home/me/packages/foundation/1.0.0/lib/netstandard1.6'时,我确实找到了文件foundation.dll
然而,该错误表明它正在寻找'/home/me/.nuget/packages/foundation/1.0.0/lib/netstandard1.6'
为什么目录中有额外的'/.nuget'节点?我在哪里指定?
再次提前感谢....
编辑三个============================================ / p>
好的,这很奇怪。我是nix的新手,但记得隐藏的文件以'。'开头。所以我在我的主文件夹和中提琴中查找了隐藏文件,我找到了'.nuget'文件夹。追逐这条路,我确实最终找到了我宝贵的foundation.dll,但它拼写了一个CAPITAL F - Foundation.dll。我认为这很奇怪,因为我使用小写'f'构建它但是知道nix对于case很挑剔,我将我的project.json文件更改为大写'F' - 我的依赖项中的'Foundation'。
{
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable",
"emitEntryPoint": true
},
"dependencies": {
"Foundation":"1.0.0-*"
},
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
}
},
"imports": ["dnxcore50"]
}
}
}
在进行了dotnet恢复后,我冒险进入了dotnet版本,并遇到了以下错误。
/home/me/projects/app/project.json(8,26):错误NU1001:无法解析依赖性基础&gt; = 1.0.0- *。
所以现在,我更接近,但似乎仍然无法像在VS 2015中那样只添加一个引用。
请帮忙!