针对.NET Core RC2和.NET 4.6.1的错误定位。

4
我有以下的project.json文件:
{
"version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.5.0-rc2-24027",
    "Dapper": "1.50.0-rc2b",
    "Microsoft.Extensions.DependencyInjection": "1.0.0-rc2-final",
    "System.Dynamic.Runtime": "4.0.11-rc2-24027",
    "Microsoft.CSharp": "4.0.1-rc2-24027"
  },

  "frameworks": {
    "netstandard1.5": {
      "imports": "dnxcore50"
    },
    "net461": {}
  }
}

现在,我收到了以下警告信息,它们对我来说是不必要的。
依赖项指定为System.Dynamic.Runtime >= 4.0.11-rc2-24027,但最终却使用了System.Dynamic.Runtime 4.0.10.0。 依赖项指定为Microsoft.CSharp >= 4.0.1-rc2-24027,但最终却使用了Microsoft.CSharp 4.0.0.0。
从框架中删除net461可以解决我的问题,但这不是首选方法。
然而,现在我可以猜测为什么会出现这些警告,可能与这些库不支持net461有关 - 尽管这对我来说有点奇怪。
我尝试只使用旧版本 - 但是然后我会收到一个警告,Dapper预期使用更新版本的这些 - 有任何想法吗?
由于某种原因,将依赖项移动到每个特定的框架(相同的版本)中也可以解决此问题。

我无法重现这个问题,你的project.json对我来说没有产生任何警告。而且这两个包都支持net45 - svick
奇怪,我使用一个新的核心类库项目成功地复现了它。 - gilmishal
@gilmishal 我可以重现这些警告。但是你为什么需要这些依赖关系呢?引用 Dapper 将隐式添加它们。你能否将它们移除? - Nate Barbettini
删除这些内容会导致以下错误:"缺少编译器所需的成员'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'"。 - gilmishal
我怀疑有一个构建规则被埋藏在某个地方,希望提出意见,因为已解决的程序集版本号更低。最好点击新问题按钮。 - Hans Passant
1个回答

2
框架相关的依赖项应该在框架特定的元素中指定。像这样:
{
  "version": "1.0.0-*",

  "dependencies": {
    "Dapper": "1.50.0-rc2b",
    "Microsoft.Extensions.DependencyInjection": "1.0.0-rc2-final",
    "System.Dynamic.Runtime": "4.0.11-rc2-24027"
  },

  "frameworks": {
    "netstandard1.5": {
      "dependencies": {
        "NETStandard.Library": "1.5.0-rc2-24027"
      },
      "imports": "dnxcore50"
    },
    "net461": {
      "dependencies": {
        "Microsoft.CSharp": "4.0.1-rc2-24027"
      }
    }
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接