【发布时间】:2014-08-18 10:26:23
【问题描述】:
我的 NuGet 包管理器有问题。我发布了我的库(一个类型提供程序,但我认为这并不重要)然后测试它,但它找不到依赖项。完整的错误消息是(为简洁起见,省略了完整的命名空间/名称):
The type provider 'TypeProviderImplementation....' reported an error:
Could not load file or assembly 'dotNetRDF', Version=1.0.3.0, Culture=neutral, PublicKeyToken=...' or one of its dependencies.
问题是在安装库时,看起来依赖项已正确安装。下载了正确的库,并且没有出现错误。 为了解决这个问题,我在 .nuspec 文件中指定了确切的版本,但这并没有改变任何东西。 ...
通过 NuGet 安装 dotNetRDF,然后手动引用我的预编译 DLL(不通过 NuGet)似乎工作正常。
所以我基本上不知道如何解决甚至调试问题。感谢您的指点。
添加有关 .NET 版本号的更多信息,因为我在下面的评论很难阅读:
我按照建议检查了框架版本。我通过查看对象浏览器中的 FrameworkDisplayName 来做到这一点。基本上,我的库使用的是 4.5,而 dotNetRDF 使用的是 4.0。
我切换到 .NET 4.0,但没有任何改变。
- 我的库 = ".NET Framework 4"
- dotNetRDF = ".NET Framework 4"
- HtmlAgilityPack = ".NET Framework 4.5"
- Newtonsoft.Json = ".NET Framework 4.5"
- VDS.Common = ".NET Framework 4 客户端配置文件"
我的依赖是dotNetRDF,剩下的都是dotNetRDF的依赖。
Latest NuSpec file can be found here。我通过命令 nuget pack LITEQ.fsproj -Prop Configuration=Release 创建包。
包 ID 是 LITEQ.RDF。
一些附加信息: 该库是一个 F# 项目。我刚刚测试了如果我创建一个控制台项目并通过 NuGet 安装库然后将引用发送到 F# 交互式控制台会发生什么。它实际上在这种情况下有效。
所以感觉通过NuGet安装库后项目配置有问题。
要重现错误,请下载库,打开 UniKo.West.Liteq 命名空间,例如使用 NpqlTypeProvider:
open Uniko.West.Liteq
type A = NpqlRdfProvider< @"">
【问题讨论】:
-
可能与您的各种软件包使用的 .Net 框架版本有关。他们都使用相同的吗?
-
我通过查看对象浏览器中的 FrameworkDisplayName 检查了框架版本。基本上,我的库使用的是 4.5,而 dotNetRDF 使用的是 4.0。我切换到 .NET 4.0,但没有任何改变。 * 我的库 = ".NET Framework 4" * dotNetRDF = ".NET Framework 4" * HtmlAgilityPack = ".NET Framework 4.5" * Newtonsoft.Json = ".NET Framework 4.5" * VDS.Common = ".NET Framework 4 Client Profile”我的依赖是dotNetRDF,剩下的都是dotNetRDF的依赖。
-
请提供您的 NuSpec 定义,否则我们只能猜测问题。此外,如果您已发布 NuGet 包,请提供包 ID
-
是的,你是对的。从一开始就应该这样做。我用 NuSpec 文件和包 ID 的链接更新了问题。
标签: f# nuget dotnetrdf nuget-spec