【问题标题】:ILMerge into nuget package causing issue with Parameter Type Mismatch with consuming projectILMerge into nuget package 导致参数类型与消费项目不匹配的问题
【发布时间】:2017-12-16 21:10:42
【问题描述】:

我有一个服务 dll,它引用了 System.Web.OData(来自 Microsoft.AspNet.OData.5.9.0)

服务 dll 有一个公开的方法,它接受一个 OData.Delta 此服务 dll 在编译时被合并,因此它嵌入了这个“版本”的数据。

现在,消费应用程序也引用了相同的 OData,但是,它来自 coreext 的全球化缓存。

但是,当消费应用程序尝试调用具有 OData.Delta 参数的方法时,它会抱怨它无法从 ConsumingApp.OData.Delta 转换为 ServiceDll.OData.Delta。

我将如何确保参数使用 OData.Delta 的实际正确“版本”以便它们不会冲突?

我似乎找不到像.. NameSpace.For.ServiceDll 这样可以让我专门针对嵌入在 ilmerge 中的 OData.Delta

【问题讨论】:

    标签: c# dll namespaces ilmerge mismatch


    【解决方案1】:

    您必须为 Visual Studio 安装 ms odata 客户端创建一个新的 odata 客户端类,添加 http uri 元数据以正确 http。之后单击文件并运行自定义工具选项下载最新元数据

    【讨论】:

    • 抱歉,我根本看不出它是如何解决我的问题的。这与其中具有相同 dll 的 ilmerged dll 之间的类型不匹配有什么关系,作为使用此 ilmerged dll 的应用程序,但也引用嵌入在 ilmerged dll 中的匹配 dll...
    【解决方案2】:

    抱歉,我了解到 odata 架构存在问题。您暴露的错误,如果我理解得很好,您正在使用 ilmerge 来组合各种项目并再次引用组合的库。我认为:

    1. 您可以添加带有姓氏的命名空间,例如:

      导入参考1 = microsoft.data; 导入参考 2 = ilmerge...;

    因此您可以在reference1.class1 和reference2.class1 等代码中使用它们

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 2010-11-17
      相关资源
      最近更新 更多