【发布时间】:2016-10-02 14:48:01
【问题描述】:
我使用的是 VS2013,它默认面向 .NET Framework 4.5。我正在尝试使用需要以 .NET 4.5.2 为目标的第三方库。这是事情开始破裂的时候:
- 我收到警告 MSB3270(“处理器架构...与处理器架构...x86 之间存在不匹配”),因此我将平台更改为 x86。很好。
- 我遇到了错误(另请参阅本问题末尾的详细信息):
“System.Runtime.Serialization.IExtensibleDataObject”类型是 在未引用的程序集中定义。您必须添加对程序集“System.Runtime.Serialization”等的引用。
所以我添加了对System.Runtime.Serialization 的引用(不过我不完全理解这个错误),我需要浏览并手动从 GAC 添加对它的引用(因为我没有针对.NET 4.5.2)。
我还需要添加对
System.ServiceModel的引用。我最终得到了警告 MS1685(“预定义类型 (...) 在多个程序集中定义”)和 MSB3247(“发现相同依赖程序集的不同版本之间的冲突”等)。 查看构建日志,冲突是:
“System.Core, Version=3.5.0.0, 文化=中性,PublicKeyToken=b77a5c561934e089”和“System.Core, 版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089"。
“System.Core,版本=3.5.0.0,文化=中性, 选择 PublicKeyToken=b77a5c561934e089" 是因为它是主要的并且 “System.Core,版本=4.0.0.0,文化=中性, PublicKeyToken=b77a5c561934e089" 不是。
我还运行了 AsmSpy(ClassLibrary1 是我的项目名称):
Reference: mscorlib
4.0.0.0 by ClassLibrary1
Reference: Microsoft.Xrm.Sdk
8.0.0.0 by ClassLibrary1
Reference: System.ServiceModel
4.0.0.0 by ClassLibrary1
其他细节: 我尝试使用的第三方库是构建示例插件所需的 Dynamics CRM 程序集,发现 here。我得到了清单2中提到的错误:
// The InputParameters collection contains all the data passed in the message request.
if (context.InputParameters.Contains("Target") &&
context.InputParameters["Target"] is Entity)
我阅读了有关这些警告的 SO 帖子。他们中的许多人(例如1、2)只是说要摆脱导致问题的引用,但我想我确实需要所有这些。其他人(1、2)认为CopyLocal - 我尝试将其设置为True 和False,但没有帮助。
因此,我没有设法解决它,所以我很感激帮助。我知道这些都是“只是警告”,但我真的很想解决它们。
【问题讨论】:
标签: c# .net dynamics-crm .net-assembly