VS2008 没有获得重新编译程序集的正确参考
我的客户是一家零售商,使用 Microsoft Dynamics RMS 作为前端,并使用 Sage 的 Simply Accounting 2010 作为会计软件包。我正在尝试自动化一些将销售数据等从 RMS 转录到 SA 的过程。
RMS 使用 COM 与插件交互,因此我的程序集是强命名的(就此而言,RMS 的程序集也是如此)。然而,SA 的程序集并不是强命名的,并且有一段时间我一直在努力尝试对 SA 的程序集进行强命名。
所以:我现在正在使用 ildasm 和 ilasm,有一秒钟它似乎起作用了,我需要的程序集被强命名了。主程序集 Sage_SA.SDK.dll 引用 Sage_SA.Domain.dll 和 Sage_SA.Domain.Utility.dll。当我将所有 3 个新的强命名程序集添加到我的 VS2008 解决方案中并尝试编译时,Sage_SA.SDK.dll 似乎无法正确识别其他 2 个程序集。具体来说,VS2008中的错误消息显示:类型“XXX”是在未引用的程序集中定义的。您必须添加对程序集“XXX”的引用。
如果我可以提供任何其他信息,请告诉我。
谢谢,
莱斯特
My client is a retailer that uses Microsoft Dynamics RMS as their front end, and Simply Accounting 2010 by Sage as their accounting package. I'm in the process of trying to automate some of the processes of transcribing sales data, etc. from RMS to SA.
RMS uses COM to interact with Addins, so my assemblies are strong named (so are RMS's assemblies, for that matter). However, SA's assemblies are not strong named, and I've been banging my head against the wall for sometime trying to strong name SA's assemblies.
So: I am using ildasm and ilasm at the moment, and for a second there it seemed to work, the assemblies I need are strongnamed. The main assembly, Sage_SA.SDK.dll references Sage_SA.Domain.dll and Sage_SA.Domain.Utility.dll. When I add all 3 of these new strong named assemblies to my VS2008 solution, and try to compile, Sage_SA.SDK.dll cannot seem to recognize the other 2 assemblies correctly. Specifically, the error message in VS2008 says: The type 'XXX' is defined in an assembly that is not referenced. You must add a reference to assembly 'XXX'.
If there's anything additional information I can provide please let me know.
Thanks,
Lester
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不要试图逆流而行。集成分两步进行:1) 签名的程序集相互通信;然后 2) 使用一些代理或附加 EXE 在未签名的程序集之间进行通信。
我会创建两个可执行文件(已签名和未签名),或一个可执行文件和一个 Windows 服务(或任何您认为舒适且可行的内容)。然后让它们以某种方式(命名管道、TCPIP 等)相互通信来传输数据。
Stop trying to swim against the current. Do your integration in two steps: 1) The signed assemblies talk to each other; then 2) Use some proxy or additional EXE to do the talking between unsigned assemblies.
I would create either two executables (signed and unsigned), or one executable and a Windows service (or whatever else seems comfortable and workable to you). Then get them talking to each other some way (named pipes, TCPIP, etc) to transfer the data over.