我希望你一切都好!到目前为止,我再也不需要提交自己的问题,因为我通常会在堆栈溢出时找到问题的解决方案。但是,这次我迷路了,希望有人能帮助我:
我只是在尝试一些SSIS基础知识。我已经编写了一个程序包,可以从Web-API下载数据并将其放入数据库中。对于来自API的JSON响应,我使用“ Newtonsoft.Json.dll”引用。在Visual Studio中执行时,程序包本身可以正常工作,但是当我将其部署到SQL Server并尝试从那里执行时,程序包将失败。我收到以下消息:
Insert and Update:Error: System.IO.FileNotFoundException: Could not load file or assembly 'Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=a3ce77dd63f8269a' or one of its dependencies. The system cannot find the file specified.
File name: 'Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=a3ce77dd63f8269a' ---> System.IO.FileNotFoundException: The system cannot find the file specified. (Exception from HRESULT: 0x80070002)
at System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence)
at System.Reflection.Assembly.LoadFile(String path)
at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)
at Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.HandleUserException(Exception e)
at Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.PrimeOutput(Int32 outputs, Int32[] outputIDs, PipelineBuffer[] buffers)
at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPrimeOutput(IDTSManagedComponentWrapper100 wrapper, Int32 outputs, Int32[] outputIDs, IDTSBuffer100[] buffers, IntPtr ppBufferWirePacket)
所以,我知道找不到Newtonsoft.Json.dll。
我在互联网上搜索后发现,有些人有类似的问题。我也可以在此站点上找到线程。我了解我需要做两件事:
为了强而有力,我使用了此处描述的过程: http://codeingaddiction.blogspot.com/2011/06/how-to-add-strong-name-to-existing-dll_16.html
我还使用以下方法检查了此方法是否正常: https://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/
然后我在命令提示符下将其安装到GAC,如下所示: gacutil -i(Path)Newtonsoft.Json.dll
不幸的是,当我尝试通过SSMS执行该消息时,仍然收到相同的错误消息。
有人有其他想法吗?非常感谢您的支持!
基督徒
答案 0 :(得分:0)
尝试将其添加到您的项目文件中:
<MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>
它将是这样的:
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
....
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
<AspNetCoreModuleModel>AspNetCoreModule</AspNetCoreModuleModel>
<PreserveCompilationContext>true</PreserveCompilationContext>
....
<MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>
....
</PropertyGroup>
我猜您正在使用服务器未安装的.NET Core版本。使用此选项,您部署的服务器将具有一个名为refs
的文件夹,其中包含所有平台相关的库,并且可以与已安装的版本独立工作。
如果仍然发生,则错误来自您的代码,而不是环境。