当我尝试将 .NET 4.5 项目更新到 jint 2.10.2 时,NuGet 失败并出现以下错误。
未能添加参考。 包“jint”试图添加对 GAC 中未找到的“System.Diagnostics.Contracts”的框架引用。 这可能是包中的错误。 请联系包所有者寻求帮助。
你好,约翰!
不要更新软件包,而是尝试卸载旧版本的软件包,然后安装新版本。 在后续更新中,不应出现此错误。
你好,
我尝试卸载软件包然后安装新版本,但仍然出现此错误。
在 net461 上全新安装时也遇到此问题。
您能否提供一些重现步骤,您正在创建的项目类型,您如何选择 nuget 包。
我在.net 4.6.1 上全新安装时也遇到了这个问题。 环境:
本来我用的是jint 2.10.0版本,升级导致了这个问题。 不幸的是,卸载 jint 并尝试全新安装也没有解决问题。 在这两种情况下,我都尝试了包管理器控制台以及 VS 中的 GUI 版本。 这是包管理器控制台的错误转储:
Executing nuget actions took 3.54 sec
update-package : Failed to add reference. The package 'jint' tried to add a framework reference to 'System.Diagnostics.Contracts' which was not found in the GAC. This is possibly a
bug in the package. Please contact the package owners for assistance.
At line:1 char:1
+ update-package jint
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Update-Package], Exception
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.UpdatePackageCommand
我不完全确定,但这可能与最近的变化有关:
https://github.com/sebastienros/jint/commit/9371178b311d63f2ee2479a69d7d6663565d6173
此更改涉及将 System.Diagnostics.Contracts 依赖项从“dependencies”移动到“frameworkAssemblies”。
除非我弄错了,否则“frameworkAssemblies”指的是 GAC 中的程序集。 因此,即使我们安装并更新了 System.Diagnostics.Contracts nuget 包,它也不会查找它,而是尝试在 GAC 中找到它(但它不存在)。 这听起来合理吗?
@samcic原因在这里解释 - https://github.com/sebastienros/jint/pull/340
如果这是在使用旧版本的 NuGet 或当前版本之间进行选择,我认为选择新版本更有意义。
@marek-benes @samcic尝试以下步骤:
@appel1不是NuGet新旧版本的选择,而是本次更新发布2.10.0 | 2.10.1 -> 2.10.2。
感谢您的帮助@Taritsyn 。 不幸的是,这些步骤没有成功(同样的错误)。 我还确保删除了所有本地文件(在解决方案“packages”文件夹中),以确保没有旧的 2.10.0 安装的痕迹。 我保存了所有内容,构建了所有内容(由于缺少 jint 内容,构建失败,但这很好),然后以管理员身份重新启动 VS。 然后我尝试将 jint fresh 安装为新包(不是更新)。 同样的错误。
如果我运行“gacutil -l”,那么它显示 System.Diagnostics.Contracts 确实安装在 GAC 中,因此错误消息相当混乱。
在 nuget 参考页面nuget 参考页面上,它提到“frameworkAssemblies”中的元素应该是“完全限定的程序集名称”。 也许应该包括文化、publickeytoken 和处理器架构? 只是一个想法。
有趣的是,如果我在 VS 中创建一个新的(基本的)控制台应用程序并安装 jint,它就可以工作。 我可能会尝试使用像我一样的 MVC 项目 + 测试项目的新解决方案,以希望尝试隔离问题。
@samcic看来,这是 NuGet 包管理器中的错误。 因为这些错误仅发生在 Visual Studio 2015 中的.cproj
项目中(在.xproj
项目中不会发生此类错误)。
@Taritsyn我假设您的意思是.csproj而不是.cproj ? 如果是这样,我在 VS 2015 中针对 .net 4.6.1 创建了一个简单的 .csproj 控制台应用程序,并且不会发生错误。 我还创建了一个简单的 .xproj 控制台应用程序,并且 jint 也可以在那里安装。
此外,我用单元测试项目创建了一个简单的 asp.net 框架 web 应用程序(mvc,.net 框架 4.6.1,不是 .net 核心)项目。 我先安装了jsint 2.10.0,然后升级到2.10.2,效果很好。
我唯一一次看到错误是在我的“大/真实”解决方案中,它再次涉及一个带有 .csproj 单元测试项目的 asp.net 框架 Web 应用程序(mvc、.net 框架 4.6.1,而不是 .net 核心)。 无论我是更新 jint 还是重新安装它,此解决方案都会出现错误。 在这个解决方案中,我经常安装和更新其他 NuGet 包,我没有看到任何其他包出现这种错误。
鉴于这一切,我不相信这是 NuGet 的错误。 我想第一步是为这个错误找到一些每个人都可以同意的重现步骤。 到目前为止,我无法找到基于设置新 VS 项目的重现步骤。
@samcic .csproj - 我打错了。
在这个解决方案中,我经常安装和更新其他 NuGet 包,我没有看到任何其他包出现这种错误。
很可能,所有这些包都是使用 $ .nuspec
文件中的NuGet.exe
创建的。 Jint 包是使用dotnet.exe
project.json
文件中的 dotnet.exe 创建的。
如果您认为 Nuget 中存在错误,请给我一个完整的问题重现,或者告诉我只使用@samcic所说的内容。 我可以直接与他们和其他一些专家交谈,以分析它的来源。
@sebastienros好的
对于包含许多项目的旧解决方案,我遇到了同样的问题。
将软件包安装到新解决方案中时我没有遇到问题。
在新的解决方案中,Nuget 添加了对以下内容的引用:
_C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5.2\Facades\System.Diagnostics.Contracts.dll_
在我较旧的解决方案中,我无法引用上面的 dll,而在它旁边没有一个小警告标志,所以我引用了这个:
_C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Diagnostics.Contracts\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Diagnostics.Contracts.dll_
软件包安装好了,一切_appears_都可以,但显然感觉不对:-)
我无法理解它,但我认为在这个线程中添加更多细节可能会有所帮助。
@dalenewman正如您所描述的那样,从 GAC 文件夹中引用程序集也对我有用。 感谢您的信息。 在我的情况下,jint 仅用于测试项目(没有生产代码),所以我认为这足以解决我的问题。
另一个注意事项:成功安装 jint 包后,我能够从项目中删除“感觉不对”的 GAC System.Diagnostics.Contracts 引用,一切都很好。 因此,似乎只需要参考就可以进行升级。 都有点奇怪。
也刚遇到这个问题。
同样在这里。 试图更新AngleSharp.Scripting 。 我知道这不仅仅是 MWE,但问题似乎与现有/更大的回购有关,并且不会出现在新项目中。
也有这个问题。 为了确认,该问题仅发生在2.10.2
上。 2.10.1
安装得很好。
定位.NET 4.6.1
这里同样的问题:
未能添加参考。 包“jint”试图添加对 GAC 中未找到的“System.Diagnostics.Contracts”的框架引用。 这可能是包中的错误。 请联系包所有者寻求帮助。
细节 :
2.10.1
更新到2.10.2
。我在 Visual Studio 2015 Update 3、.NET Framework 4.5.1 中遇到了同样的问题。 尝试从头开始安装 jint v2.10.3。
解决问题的步骤:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\Facades\System.Diagnostics.Contracts.dll
jint
,现在它可以工作了!System.Diagnostics.Contracts.dll
关闭,因为有一个解决方法,3.x 不应该受此影响,这就是开发工作的所在。
最有用的评论
我在 Visual Studio 2015 Update 3、.NET Framework 4.5.1 中遇到了同样的问题。 尝试从头开始安装 jint v2.10.3。
解决问题的步骤:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\Facades\System.Diagnostics.Contracts.dll
jint
,现在它可以工作了!System.Diagnostics.Contracts.dll