【问题标题】:Losing Newtonsoft reference when closing script task in SSIS在 SSIS 中关闭脚本任务时丢失 Newtonsoft 参考
【发布时间】:2022-04-06 23:45:50
【问题描述】:

我正在 Visual Studio 2012 中构建一个 SSIS 包,在包中我有一个 C# 脚本任务,它读取各种文件格式并将这些文件中的数据插入到数据库表中。

这很好用,但现在我需要脚本来处理 JSON。

为此,我已进入脚本任务并通过 NuGet 包管理器添加 Json.NET 框架,然后添加以下代码行以引用命名空间。

using Newtonsoft.Json;

然后我可以引用该库并使用 JsonConvert 等命令,但是当我保存脚本并关闭它以运行 SSIS 包时,我收到以下错误:

错误:SCR 上的 0x1 - 填充登陆表,脚本错误:无法 加载文件或程序集'Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其之一 依赖项。系统找不到指定的文件。

当我回到脚本时,对命名空间的引用在下面有一条红色波浪线

当我转到 NuGet 包管理器时,有一条消息说解决方案中缺少一些 NuGet 包。

恢复并不能解决问题,我必须卸载并重新安装 Json.NET 才能摆脱红线,但是当我关闭脚本并尝试运行包时,该过程再次开始。

非常感谢任何帮助。

谢谢

【问题讨论】:

  • 是的,还有一个关于 nuget 和 SSIS 引用失败的问题。我还没有深入研究 nuget 的工作原理,看看它与 SSIS 脚本的作用相比如何
  • 感谢您的链接。我认为 NuGet 正在安装对我的漫游 appdata 文件夹的引用。你知道如何将它安装到 GAC 上吗?
  • 是的,您需要使用gacutil 来安装DLL 大约(gacutil -if NewtonSoft.dll
  • 看起来 NewtonSoft.dll 存在具有相同强名称的不同不兼容版本的问题。我通过谷歌搜索找到了这个——github.com/JamesNK/Newtonsoft.Json/issues/615

标签: c# json visual-studio ssis nuget


【解决方案1】:

您必须将库添加到全局程序集缓存 (GAC)

  1. 安装参考后,转到解决方案上的参考。
  2. 右键单击并转到属性。
  3. 复制物理路径示例 C:/... 等
  4. 转到 VS code cmd 并以管理员身份打开。
  5. 输入gacutil -i,后跟PhysicalRoute,(可以粘贴)

示例:

gacutil -i C:/Solution/... 

它会提示该库已成功添加到 GAC,然后它就不会再消失了。

【讨论】:

    猜你喜欢
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多