这里有点沮丧。我试图在SSIS中的c#脚本任务中使用newtonsoft.json库。我打开解决方案,转到参考资料,并通过“管理NuGet软件包”进行安装。
当我安装它时,一切都很好,并且我可以开始编写代码,并且没有任何错误。但是,一旦我保存了解决方案并退出vs并返回到ssis,如果再次打开它,该引用现在就会显示一个警告图标,并说“找不到引用的组件'Newtonsoft.Json'”,我所有代码带红色下划线。
关于如何解决此问题的任何想法?
不确定是否值得注意,但是我没有下载/保存任何.dll文件或安装任何东西,而不仅仅是在“管理nuget包”控制台中
这是我的packages.config列出的内容:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="12.0.1" targetFramework="net45" />
</packages>
也不确定这是否重要,但在packages.config中,第一个“
答案 0 :(得分:0)
我以前做过这类问题。我所做的是从SSIS解决方案中的脚本任务内部手动导入了Newtonsoft.Json dll参考。
之后,您将需要在运行解决方案后将其dll注册到GAC(全局程序集缓存),以便能够正确加载或使用这些功能。
public System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
if (args.Name.Contains("Newtonsoft.Json"))
{
string path = @"D:\Projects\FortiAnalyzer\FortiAnalyzer\FortiAnalyzer\bin\portable-net45+win8+wp8+wpa81\Newtonsoft.Json.dll";
return System.Reflection.Assembly.LoadFile(@path);
}
return null;
}
然后在您的Main中,您需要使用此代码在GAC中运行dll的加载
//Register Reference 'Newtonsoft.Json' to GAC initially every run of this Script
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);