【问题标题】:System.Runtime (.net 4.6) and mscorlib (.net Standard 1.6)System.Runtime (.net 4.6) 和 mscorlib (.net Standard 1.6)
【发布时间】:2017-01-21 11:14:55
【问题描述】:

我开发了一个简单的 .net 标准库。

然后我在 .net 4.6 项目中引用了这个程序集,它基本上可以正常工作。

但是当我尝试使用 bool(或 Guid)参数调用此 .net 标准库中的方法时,我收到此错误:

无法转换源类型 'bool [mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]' 到目标类型 'bool [System.Runtime,版本=4.1.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a]'

这些类型在两个程序集中定义:mscorlib 和 System.Runtime...我该如何解决这个问题?

更新

这里有一个非常简单的例子来显示这个错误:

.net Portable Library --> 通过属性选项卡转换为 .NET Standard

public class MyClass
{
    public void CallMe(Guid guid)
    {
        //so something
    }
}

Project.json

{
  "supports": {},
  "dependencies": {
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1",
    "NETStandard.Library": "1.6.0"
  },
  "frameworks": {
    "netstandard1.6": {}
  }
}

我还必须将它添加到我的 csproj-File 中,否则它根本不起作用:

  <PropertyGroup>
    <NuGetTargetMoniker>.NETStandard,Version=v1.6</NuGetTargetMoniker>
  </PropertyGroup>

net 4.6.1 项目(通过 dll 文件直接引用 .net 标准库(项目引用不起作用)

public class Class1
    {
        private void Call()
        {
            var c = new MyClass();
            c.CallMe(Guid.NewGuid());
        }
    }

这就是错误信息:

【问题讨论】:

  • 你能给一个minimal reproducible example,包括你的项目文件,如果它仍然是project.json?当您说“.net 4.6 项目”时,您是指 .NET 4.6、4.6.1 还是 4.6.2?这是一个 .NET Core 风格的项目,还是一个常规的 csproj?基本上这里有很多细节在起作用——了解它们真的很有帮助。
  • 我添加了一个简单的例子来显示这个错误
  • 您的目标是来自 .NET 4.6.1 项目的 netstandard1.6 库 - 这不应该工作 - 请参阅 docs.microsoft.com/en-us/dotnet/articles/standard/library。相反,请尝试以 netstandard1.4 为目标。
  • 我还怀疑直接添加对 DLL 的引用是个坏主意。我相信可能需要程序集绑定重定向。基本上,现在很难将 csproj 项目的引用添加到 project.json 项目 - 它应该全部在新工具中进行排序。
  • 好的,谢谢乔恩!这解决了我的简单示例。但是在我的真实项目中,我还有其他需要 .NET Standard 1.5 或更高版本的依赖项......我想我必须为此找到另一个解决方案。但无论如何 - 再次感谢!

标签: .net mscorlib .net-standard


【解决方案1】:

@Jon Skeet 谢谢你的帮助。

问题在于 .net Framework-Version 和 .NET Standardversion 之间的不兼容。

可以在此处找到该列表: https://docs.microsoft.com/en-us/dotnet/articles/standard/library

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 2018-01-27
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多